From 35c324b6b4da464682992a4e59576f77d50b87ea Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Fri, 2 Aug 2019 10:53:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A6=96=E5=B8=A7=E4=B8=8D?= =?UTF-8?q?=E6=98=AFI=E5=B8=A7=20=E5=AF=BC=E8=87=B4=E8=8A=B1=E5=B1=8F?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MediaFile/MP4Muxer.cpp | 8 ++++++++ src/MediaFile/MP4Muxer.h | 1 + src/MediaFile/Mp4Maker.cpp | 6 ++---- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/MediaFile/MP4Muxer.cpp b/src/MediaFile/MP4Muxer.cpp index afa78762..cedc7c4f 100644 --- a/src/MediaFile/MP4Muxer.cpp +++ b/src/MediaFile/MP4Muxer.cpp @@ -79,6 +79,14 @@ void MP4Muxer::onTrackFrame(const Frame::Ptr &frame) { return; } + if(frame->getTrackType() == TrackVideo){ + if(!_started && !frame->keyFrame()){ + //第一帧必须是I帧,防止花屏 + return; + } + _started = true; + } + int with_nalu_size ; switch (frame->getCodecId()){ case CodecH264: diff --git a/src/MediaFile/MP4Muxer.h b/src/MediaFile/MP4Muxer.h index a458b4ca..5b8d2f27 100644 --- a/src/MediaFile/MP4Muxer.h +++ b/src/MediaFile/MP4Muxer.h @@ -80,6 +80,7 @@ private: uint32_t start_pts = 0; }; map _codec_to_trackid; + bool _started = false; }; diff --git a/src/MediaFile/Mp4Maker.cpp b/src/MediaFile/Mp4Maker.cpp index a4ec0d89..3cf2a7ec 100644 --- a/src/MediaFile/Mp4Maker.cpp +++ b/src/MediaFile/Mp4Maker.cpp @@ -89,10 +89,8 @@ void Mp4Maker::createFile() { try { _muxer = std::make_shared(strFileTmp.data()); for(auto &track :_tracks){ - if(track){ - //添加track - _muxer->addTrack(track); - } + //添加track + _muxer->addTrack(track); } _strFileTmp = strFileTmp; _strFile = strFile;