mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-23 03:10:04 +08:00
优化推流器代码
This commit is contained in:
parent
f6b963f0f2
commit
d208f69730
@ -63,6 +63,20 @@ void RtmpPusher::teardown() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RtmpPusher::onPublishResult(const SockException &ex) {
|
||||||
|
_pPublishTimer.reset();
|
||||||
|
if(_onPublished){
|
||||||
|
_onPublished(ex);
|
||||||
|
_onPublished = nullptr;
|
||||||
|
}else if(_onShutdown){
|
||||||
|
_onShutdown(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ex){
|
||||||
|
teardown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void RtmpPusher::publish(const string &strUrl) {
|
void RtmpPusher::publish(const string &strUrl) {
|
||||||
teardown();
|
teardown();
|
||||||
string strHost = FindField(strUrl.data(), "://", "/");
|
string strHost = FindField(strUrl.data(), "://", "/");
|
||||||
@ -93,7 +107,6 @@ void RtmpPusher::publish(const string &strUrl) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
strongSelf->onPublishResult(SockException(Err_timeout,"publish rtmp timeout"));
|
strongSelf->onPublishResult(SockException(Err_timeout,"publish rtmp timeout"));
|
||||||
strongSelf->teardown();
|
|
||||||
return false;
|
return false;
|
||||||
},getPoller()));
|
},getPoller()));
|
||||||
|
|
||||||
@ -105,7 +118,7 @@ void RtmpPusher::publish(const string &strUrl) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RtmpPusher::onErr(const SockException &ex){
|
void RtmpPusher::onErr(const SockException &ex){
|
||||||
onShutdown(ex);
|
onPublishResult(ex);
|
||||||
}
|
}
|
||||||
void RtmpPusher::onConnect(const SockException &err){
|
void RtmpPusher::onConnect(const SockException &err){
|
||||||
if(err) {
|
if(err) {
|
||||||
@ -129,8 +142,6 @@ void RtmpPusher::onRecv(const Buffer::Ptr &pBuf){
|
|||||||
} catch (exception &e) {
|
} catch (exception &e) {
|
||||||
SockException ex(Err_other, e.what());
|
SockException ex(Err_other, e.what());
|
||||||
onPublishResult(ex);
|
onPublishResult(ex);
|
||||||
onShutdown(ex);
|
|
||||||
teardown();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,8 +218,7 @@ inline void RtmpPusher::send_metaData(){
|
|||||||
_pRtmpReader->setDetachCB([weakSelf](){
|
_pRtmpReader->setDetachCB([weakSelf](){
|
||||||
auto strongSelf = weakSelf.lock();
|
auto strongSelf = weakSelf.lock();
|
||||||
if(strongSelf){
|
if(strongSelf){
|
||||||
strongSelf->onShutdown(SockException(Err_other,"媒体源被释放"));
|
strongSelf->onPublishResult(SockException(Err_other,"媒体源被释放"));
|
||||||
strongSelf->teardown();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
onPublishResult(SockException(Err_success,"success"));
|
onPublishResult(SockException(Err_success,"success"));
|
||||||
|
@ -63,19 +63,7 @@ protected:
|
|||||||
send(buffer);
|
send(buffer);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
void onShutdown(const SockException &ex) {
|
void onPublishResult(const SockException &ex);
|
||||||
_pPublishTimer.reset();
|
|
||||||
if(_onShutdown){
|
|
||||||
_onShutdown(ex);
|
|
||||||
}
|
|
||||||
_pRtmpReader.reset();
|
|
||||||
}
|
|
||||||
void onPublishResult(const SockException &ex) {
|
|
||||||
_pPublishTimer.reset();
|
|
||||||
if(_onPublished){
|
|
||||||
_onPublished(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename FUN>
|
template<typename FUN>
|
||||||
inline void addOnResultCB(const FUN &fun) {
|
inline void addOnResultCB(const FUN &fun) {
|
||||||
|
@ -62,17 +62,15 @@ void RtspPusher::publish(const string &strUrl) {
|
|||||||
publish(url,user,pwd,eType);
|
publish(url,user,pwd,eType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RtspPusher::onShutdown(const SockException &ex) {
|
|
||||||
if(_onShutdown){
|
|
||||||
_onShutdown(ex);
|
|
||||||
}
|
|
||||||
teardown();
|
|
||||||
}
|
|
||||||
void RtspPusher::onPublishResult(const SockException &ex) {
|
void RtspPusher::onPublishResult(const SockException &ex) {
|
||||||
_pPublishTimer.reset();
|
_pPublishTimer.reset();
|
||||||
if(_onPublished){
|
if(_onPublished){
|
||||||
_onPublished(ex);
|
_onPublished(ex);
|
||||||
|
_onPublished = nullptr;
|
||||||
|
}else if(_onShutdown){
|
||||||
|
_onShutdown(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ex){
|
if(ex){
|
||||||
teardown();
|
teardown();
|
||||||
}
|
}
|
||||||
@ -128,7 +126,7 @@ void RtspPusher::publish(const string & strUrl, const string &strUser, const str
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RtspPusher::onErr(const SockException &ex) {
|
void RtspPusher::onErr(const SockException &ex) {
|
||||||
onShutdown(ex);
|
onPublishResult(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RtspPusher::onConnect(const SockException &err) {
|
void RtspPusher::onConnect(const SockException &err) {
|
||||||
@ -145,7 +143,6 @@ void RtspPusher::onRecv(const Buffer::Ptr &pBuf){
|
|||||||
} catch (exception &e) {
|
} catch (exception &e) {
|
||||||
SockException ex(Err_other, e.what());
|
SockException ex(Err_other, e.what());
|
||||||
onPublishResult(ex);
|
onPublishResult(ex);
|
||||||
onShutdown(ex);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -366,7 +363,7 @@ void RtspPusher::sendRecord() {
|
|||||||
_pRtspReader->setDetachCB([weakSelf](){
|
_pRtspReader->setDetachCB([weakSelf](){
|
||||||
auto strongSelf = weakSelf.lock();
|
auto strongSelf = weakSelf.lock();
|
||||||
if(strongSelf){
|
if(strongSelf){
|
||||||
strongSelf->onShutdown(SockException(Err_other,"媒体源被释放"));
|
strongSelf->onPublishResult(SockException(Err_other,"媒体源被释放"));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if(_eType != Rtsp::RTP_TCP){
|
if(_eType != Rtsp::RTP_TCP){
|
||||||
|
@ -50,7 +50,6 @@ protected:
|
|||||||
void onRtpPacket(const char *data,uint64_t len) override {};
|
void onRtpPacket(const char *data,uint64_t len) override {};
|
||||||
private:
|
private:
|
||||||
void publish(const string &strUrl, const string &strUser, const string &strPwd, Rtsp::eRtpType eType );
|
void publish(const string &strUrl, const string &strUser, const string &strPwd, Rtsp::eRtpType eType );
|
||||||
void onShutdown(const SockException &ex);
|
|
||||||
void onPublishResult(const SockException &ex);
|
void onPublishResult(const SockException &ex);
|
||||||
|
|
||||||
void sendAnnounce();
|
void sendAnnounce();
|
||||||
|
Loading…
Reference in New Issue
Block a user