解决单音频无法录制mp4的bug
This commit is contained in:
parent
90c6dd4bfa
commit
224a35dbd5
|
|
@ -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,14 +80,18 @@ void MP4Muxer::inputFrame(const Frame::Ptr &frame) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!_started){
|
if (!_started) {
|
||||||
//还没开始
|
//还没开始
|
||||||
if(frame->getTrackType() != TrackVideo || !frame->keyFrame()){
|
if (!_have_video) {
|
||||||
//如果首帧是音频或者是视频但是不是i帧,那么不能开始写文件
|
_started = true;
|
||||||
return;
|
} else {
|
||||||
|
if (frame->getTrackType() != TrackVideo || !frame->keyFrame()) {
|
||||||
|
//如果首帧是音频或者是视频但是不是i帧,那么不能开始写文件
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//开始写文件
|
||||||
|
_started = true;
|
||||||
}
|
}
|
||||||
//开始写文件
|
|
||||||
_started = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//mp4文件时间戳需要从0开始
|
//mp4文件时间戳需要从0开始
|
||||||
|
|
@ -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) {
|
||||||
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:
|
||||||
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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue