Commit 87dd1c7f by xiongguangjie

avoid loopback ffmpeg push stream exit receive deleteStream message after broken pipe

parent f96da3d1
...@@ -50,7 +50,7 @@ void RtmpSession::onError(const SockException& err) { ...@@ -50,7 +50,7 @@ void RtmpSession::onError(const SockException& err) {
_push_src_ownership = nullptr; _push_src_ownership = nullptr;
//延时10秒注销流 //延时10秒注销流
auto push_src = std::move(_push_src); auto push_src = std::move(_push_src);
getPoller()->doDelayTask(_continue_push_ms, [push_src]() { return 0; }); _delay_unregister_task = getPoller()->doDelayTask(_continue_push_ms, [push_src]() { return 0; });
} }
} }
...@@ -223,6 +223,10 @@ void RtmpSession::onCmd_deleteStream(AMFDecoder &dec) { ...@@ -223,6 +223,10 @@ void RtmpSession::onCmd_deleteStream(AMFDecoder &dec) {
"code", "NetStream.Unpublish.Success", "code", "NetStream.Unpublish.Success",
"description", "Stop publishing." }); "description", "Stop publishing." });
//_push_src = nullptr; //_push_src = nullptr;
//TraceL<<" delete stream";
if(_delay_unregister_task){
_delay_unregister_task->cancel();
}
throw std::runtime_error(StrPrinter << "Stop publishing" << endl); throw std::runtime_error(StrPrinter << "Stop publishing" << endl);
} }
......
...@@ -103,6 +103,8 @@ private: ...@@ -103,6 +103,8 @@ private:
std::weak_ptr<RtmpMediaSource> _play_src; std::weak_ptr<RtmpMediaSource> _play_src;
AMFValue _push_metadata; AMFValue _push_metadata;
RtmpMediaSourceImp::Ptr _push_src; RtmpMediaSourceImp::Ptr _push_src;
//延迟注销任务
toolkit::EventPoller::DelayTask::Ptr _delay_unregister_task;
std::shared_ptr<void> _push_src_ownership; std::shared_ptr<void> _push_src_ownership;
RtmpMediaSource::RingType::RingReader::Ptr _ring_reader; RtmpMediaSource::RingType::RingReader::Ptr _ring_reader;
}; };
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论