From 98ac328318262be50718fb37812ba232833aee5c Mon Sep 17 00:00:00 2001 From: yingxiaodong Date: Sat, 9 Aug 2025 17:26:00 +0800 Subject: [PATCH] =?UTF-8?q?BUG=E4=BF=AE=E6=AD=A3=EF=BC=9A=E5=A4=9A?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=92=AD=E6=94=BE=EF=BC=88loadMP4File?= =?UTF-8?q?=EF=BC=89=E6=97=B6=EF=BC=8C=E5=90=8E=E7=BB=AD=E6=96=87=E4=BB=B6?= =?UTF-8?q?track=5Findex=E5=AF=B9=E5=BA=94=E9=94=99=E8=AF=AF=20(#4386)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 每个mp4文件的音视频的track_index不会完全一致,需要做对应处理。 --- src/Record/MP4Demuxer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Record/MP4Demuxer.cpp b/src/Record/MP4Demuxer.cpp index b7f70748..27bdce51 100644 --- a/src/Record/MP4Demuxer.cpp +++ b/src/Record/MP4Demuxer.cpp @@ -218,7 +218,10 @@ void MultiMP4Demuxer::openMP4(const string &files_string) { CHECK(!_demuxers.empty()); _it = _demuxers.begin(); for (auto &track : _it->second->getTracks(false)) { - _tracks.emplace(track->getIndex(), track->clone()); + auto clone_track(track->clone()); + clone_track->setIndex(clone_track->getTrackType()); + _tracks.emplace(clone_track->getIndex(), clone_track); + DebugL << "track index: " << track->getIndex() << " -> " << clone_track->getIndex(); } } @@ -244,6 +247,7 @@ Frame::Ptr MultiMP4Demuxer::readFrame(bool &keyFrame, bool &eof) { for (;;) { auto ret = _it->second->readFrame(keyFrame, eof); if (ret) { + ret->setIndex(ret->getTrackType()); auto it = _tracks.find(ret->getIndex()); if (it != _tracks.end()) { auto ret2 = std::make_shared(ret);