修复写两次Track的bug
This commit is contained in:
parent
c03ea1d893
commit
affc98f927
|
|
@ -49,8 +49,9 @@ public:
|
||||||
* @param track 媒体描述
|
* @param track 媒体描述
|
||||||
*/
|
*/
|
||||||
void addTrack(const Track::Ptr & track) {
|
void addTrack(const Track::Ptr & track) {
|
||||||
_rtmp->addTrack(track);
|
//克隆track的目的是防止inputFrame时由于用的同一个track而导致写入两次数据
|
||||||
_rtsp->addTrack(track);
|
_rtmp->addTrack(track->clone());
|
||||||
|
_rtsp->addTrack(track->clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -58,6 +59,7 @@ public:
|
||||||
* @param frame 帧数据
|
* @param frame 帧数据
|
||||||
*/
|
*/
|
||||||
void inputFrame(const Frame::Ptr &frame) override {
|
void inputFrame(const Frame::Ptr &frame) override {
|
||||||
|
//_rtmp和_rtsp对象不能使用相同的Track,否则会触发两次inputFrame操作
|
||||||
_rtmp->inputFrame(frame);
|
_rtmp->inputFrame(frame);
|
||||||
_rtsp->inputFrame(frame);
|
_rtsp->inputFrame(frame);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ public:
|
||||||
typedef std::shared_ptr<RtmpRing> Ptr;
|
typedef std::shared_ptr<RtmpRing> Ptr;
|
||||||
|
|
||||||
RtmpRing(){
|
RtmpRing(){
|
||||||
_rtmpRing = std::make_shared<RingType>();
|
|
||||||
}
|
}
|
||||||
virtual ~RtmpRing(){}
|
virtual ~RtmpRing(){}
|
||||||
|
|
||||||
|
|
@ -81,7 +80,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
bool inputRtmp(const RtmpPacket::Ptr &rtmp, bool key_pos) override{
|
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;
|
return key_pos;
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,6 @@ public:
|
||||||
typedef std::shared_ptr<RtpRing> Ptr;
|
typedef std::shared_ptr<RtpRing> Ptr;
|
||||||
|
|
||||||
RtpRing(){
|
RtpRing(){
|
||||||
_rtpRing = std::make_shared<RingType>();
|
|
||||||
}
|
}
|
||||||
virtual ~RtpRing(){}
|
virtual ~RtpRing(){}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue