diff --git a/src/MediaFile/HLSMaker.cpp b/src/MediaFile/HLSMaker.cpp index 177bfb0c..39461a15 100644 --- a/src/MediaFile/HLSMaker.cpp +++ b/src/MediaFile/HLSMaker.cpp @@ -160,7 +160,9 @@ void HLSMaker::inputH264(void *data, uint32_t length, uint32_t timeStamp) { } case H264Frame::NAL_B_P: //P //insert aud frame before p and SPS frame - _ts.inputH264("\x0\x0\x0\x1\x9\xf0", 6, timeStamp * 90); + if(timeStamp != _ui32LastFrameStamp){ + _ts.inputH264("\x0\x0\x0\x1\x9\xf0", 6, timeStamp * 90); + } case H264Frame::NAL_IDR: //IDR case H264Frame::NAL_PPS: //PPS _ts.inputH264((char *) data, length, timeStamp * 90); @@ -168,6 +170,8 @@ void HLSMaker::inputH264(void *data, uint32_t length, uint32_t timeStamp) { default: break; } + + _ui32LastFrameStamp = timeStamp; } void HLSMaker::inputAAC(void *data, uint32_t length, uint32_t timeStamp) { diff --git a/src/MediaFile/HLSMaker.h b/src/MediaFile/HLSMaker.h index 80ba6ccb..3cb6a9c9 100644 --- a/src/MediaFile/HLSMaker.h +++ b/src/MediaFile/HLSMaker.h @@ -80,6 +80,7 @@ private: uint64_t _ui64TsCnt; uint32_t _ui32BufSize; uint32_t _ui32LastStamp; + uint32_t _ui32LastFrameStamp = 0; std::deque _iDurations;