修复FFmpeg拉流代理功能缺陷的问题:#533

This commit is contained in:
xiongziliang
2020-10-24 23:31:58 +08:00
parent 67e49cb66e
commit 38a002646d
11 changed files with 71 additions and 24 deletions

View File

@@ -233,7 +233,7 @@ void FFmpegSource::setOnClose(const function<void()> &cb){
}
bool FFmpegSource::close(MediaSource &sender, bool force) {
auto listener = _listener.lock();
auto listener = getDelegate();
if(listener && !listener->close(sender,force)){
//关闭失败
return false;
@@ -258,17 +258,11 @@ std::shared_ptr<SockInfo> FFmpegSource::getOriginSock(MediaSource &sender) const
}
void FFmpegSource::onGetMediaSource(const MediaSource::Ptr &src) {
auto listener = src->getListener();
auto listener = src->getListener(true);
if (listener.lock().get() != this) {
//防止多次进入onGetMediaSource函数导致无递归调用的bug
_listener = listener;
//防止多次进入onGetMediaSource函数导致无递归调用的bug
setDelegate(listener);
src->setListener(shared_from_this());
} else {
WarnL << "多次触发onGetMediaSource事件:"
<< src->getSchema() << "/"
<< src->getVhost() << "/"
<< src->getApp() << "/"
<< src->getId();
}
}