Commit affc98f9 by xiongziliang

修复写两次Track的bug

parent c03ea1d8
......@@ -49,8 +49,9 @@ public:
* @param track 媒体描述
*/
void addTrack(const Track::Ptr & track) {
_rtmp->addTrack(track);
_rtsp->addTrack(track);
//克隆track的目的是防止inputFrame时由于用的同一个track而导致写入两次数据
_rtmp->addTrack(track->clone());
_rtsp->addTrack(track->clone());
}
/**
......@@ -58,6 +59,7 @@ public:
* @param frame 帧数据
*/
void inputFrame(const Frame::Ptr &frame) override {
//_rtmp和_rtsp对象不能使用相同的Track,否则会触发两次inputFrame操作
_rtmp->inputFrame(frame);
_rtsp->inputFrame(frame);
}
......
......@@ -68,7 +68,6 @@ public:
typedef std::shared_ptr<RtmpRing> Ptr;
RtmpRing(){
_rtmpRing = std::make_shared<RingType>();
}
virtual ~RtmpRing(){}
......@@ -81,7 +80,9 @@ public:
}
bool inputRtmp(const RtmpPacket::Ptr &rtmp, bool key_pos) override{
_rtmpRing->write(rtmp,key_pos);
if(_rtmpRing){
_rtmpRing->write(rtmp,key_pos);
}
return key_pos;
}
protected:
......
......@@ -85,7 +85,6 @@ public:
typedef std::shared_ptr<RtpRing> Ptr;
RtpRing(){
_rtpRing = std::make_shared<RingType>();
}
virtual ~RtpRing(){}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论