From ce5c71c9940e5445c4324baffa3190c8bebb342c Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Fri, 26 Oct 2018 22:58:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84gop=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=EF=BC=8C=E6=8F=90=E9=AB=98=E7=A7=92=E5=BC=80?= =?UTF-8?q?=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Rtmp/RtmpMediaSource.h | 5 +++-- src/RtmpMuxer/H264RtmpCodec.cpp | 6 +----- src/RtspMuxer/H264RtpCodec.cpp | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Rtmp/RtmpMediaSource.h b/src/Rtmp/RtmpMediaSource.h index dc8c3415..99ff7d8e 100644 --- a/src/Rtmp/RtmpMediaSource.h +++ b/src/Rtmp/RtmpMediaSource.h @@ -100,9 +100,10 @@ public: MediaSource::regist(); _bRegisted = true; } + } else{ + _mapStamp[pkt->typeId] = pkt->timeStamp; + _pRing->write(pkt,pkt->isVideoKeyFrame()); } - _mapStamp[pkt->typeId] = pkt->timeStamp; - _pRing->write(pkt,pkt->isVideoKeyFrame()); } uint32_t getTimeStamp(TrackType trackType) override { diff --git a/src/RtmpMuxer/H264RtmpCodec.cpp b/src/RtmpMuxer/H264RtmpCodec.cpp index f1f59df2..a48e6014 100644 --- a/src/RtmpMuxer/H264RtmpCodec.cpp +++ b/src/RtmpMuxer/H264RtmpCodec.cpp @@ -153,10 +153,6 @@ void H264RtmpEncoder::inputFrame(const Frame::Ptr &frame) { switch (type){ case 5: - //在IDR帧之前插入config包 - if(_gotSpsPps){ - makeVideoConfigPkt(); - } case 1:{ //I or P or B frame int8_t flags = 7; //h.264 @@ -230,7 +226,7 @@ void H264RtmpEncoder::makeVideoConfigPkt() { rtmpPkt->streamId = STREAM_MEDIA; rtmpPkt->timeStamp = 0; rtmpPkt->typeId = MSG_VIDEO; - RtmpCodec::inputRtmp(rtmpPkt, true); + RtmpCodec::inputRtmp(rtmpPkt, false); } diff --git a/src/RtspMuxer/H264RtpCodec.cpp b/src/RtspMuxer/H264RtpCodec.cpp index f02b68cb..4510bd64 100644 --- a/src/RtspMuxer/H264RtpCodec.cpp +++ b/src/RtspMuxer/H264RtpCodec.cpp @@ -257,7 +257,7 @@ void H264RtpEncoder::makeH264Rtp(const void* data, unsigned int len, bool mark, rtppkt->offset = 16; uint8_t type = ((uint8_t *) (data))[0] & 0x1F; - RtpCodec::inputRtp(rtppkt,type == 5); + RtpCodec::inputRtp(rtppkt,type == 7); _ui16Sequence++; _ui32TimeStamp = uiStamp; }