Commit 224a35db by xiongziliang

解决单音频无法录制mp4的bug

parent 90c6dd4b
...@@ -70,6 +70,7 @@ void MP4MuxerBase::init(int flags) { ...@@ -70,6 +70,7 @@ void MP4MuxerBase::init(int flags) {
void MP4Muxer::resetTracks() { void MP4Muxer::resetTracks() {
_codec_to_trackid.clear(); _codec_to_trackid.clear();
_started = false; _started = false;
_have_video = false;
} }
void MP4Muxer::inputFrame(const Frame::Ptr &frame) { void MP4Muxer::inputFrame(const Frame::Ptr &frame) {
...@@ -79,15 +80,19 @@ void MP4Muxer::inputFrame(const Frame::Ptr &frame) { ...@@ -79,15 +80,19 @@ void MP4Muxer::inputFrame(const Frame::Ptr &frame) {
return; return;
} }
if(!_started){ if (!_started) {
//还没开始 //还没开始
if(frame->getTrackType() != TrackVideo || !frame->keyFrame()){ if (!_have_video) {
_started = true;
} else {
if (frame->getTrackType() != TrackVideo || !frame->keyFrame()) {
//如果首帧是音频或者是视频但是不是i帧,那么不能开始写文件 //如果首帧是音频或者是视频但是不是i帧,那么不能开始写文件
return; return;
} }
//开始写文件 //开始写文件
_started = true; _started = true;
} }
}
//mp4文件时间戳需要从0开始 //mp4文件时间戳需要从0开始
auto &track_info = it->second; auto &track_info = it->second;
...@@ -211,6 +216,7 @@ void MP4Muxer::addTrack(const Track::Ptr &track) { ...@@ -211,6 +216,7 @@ void MP4Muxer::addTrack(const Track::Ptr &track) {
return; return;
} }
_codec_to_trackid[track->getCodecId()].track_id = track_id; _codec_to_trackid[track->getCodecId()].track_id = track_id;
_have_video = true;
} }
break; break;
case CodecH265: { case CodecH265: {
...@@ -248,6 +254,7 @@ void MP4Muxer::addTrack(const Track::Ptr &track) { ...@@ -248,6 +254,7 @@ void MP4Muxer::addTrack(const Track::Ptr &track) {
return; return;
} }
_codec_to_trackid[track->getCodecId()].track_id = track_id; _codec_to_trackid[track->getCodecId()].track_id = track_id;
_have_video = true;
} }
break; break;
default: default:
......
...@@ -81,8 +81,9 @@ private: ...@@ -81,8 +81,9 @@ private:
Stamp stamp; Stamp stamp;
}; };
unordered_map<int,track_info> _codec_to_trackid; unordered_map<int,track_info> _codec_to_trackid;
bool _started = false;
List<Frame::Ptr> _frameCached; List<Frame::Ptr> _frameCached;
bool _started = false;
bool _have_video = false;
}; };
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论