Demuxer/Player: 修改解复用与播放器底层逻辑,确保触发播放成功回调时不丢帧

This commit is contained in:
ziyue
2021-11-10 10:58:43 +08:00
parent 37fdb8d135
commit fdfde17ec7
14 changed files with 391 additions and 421 deletions

View File

@@ -181,7 +181,7 @@ void MediaSink::emitAllTrackReady() {
void MediaSink::onAllTrackReady_l() {
//是否添加静音音频
GET_CONFIG(bool, addMuteAudio, General::kAddMuteAudio);
if (addMuteAudio && !_track_map[TrackAudio]) {
if (addMuteAudio && _track_map.find(TrackAudio) == _track_map.end()) {
addMuteAudioTrack();
}
onAllTrackReady();
@@ -253,11 +253,12 @@ bool MuteAudioMaker::inputFrame(const Frame::Ptr &frame) {
}
bool MediaSink::addMuteAudioTrack() {
if (getTrack(TrackAudio, false)) {
if (_track_map.find(TrackAudio) != _track_map.end()) {
WarnL << "audio track already existed";
return false;
}
if (addTrack(std::make_shared<AACTrack>())) {
if (MediaSink::addTrack(std::make_shared<AACTrack>(makeAacConfig(MUTE_ADTS_DATA, ADTS_HEADER_LEN)))) {
_mute_audio_maker = std::make_shared<MuteAudioMaker>();
_mute_audio_maker->addDelegate(std::make_shared<FrameWriterInterfaceHelper>([this](const Frame::Ptr &frame) {
return inputFrame(frame);