这个用例是一项服务,它手动将一系列未压缩的 .wav 媒体片段编码为 .m4s 片段,以便通过 MPEG-DASH 进行广播,使用 ffmpeg 将 .wav 压缩为 .aac 并使用 sannies/mp4parser 将 aac 音频组装成 . m4s 媒体片段。
我创建了这个公共 GitHub 项目来完整地重现这个问题。
例如,这是自定义ChunkFragmentM4sBuilder.java类。
此日志来自ChunkFragmentM4sBuilderTest.java导致串联的测试输出test-java-mp4parser.mp4似乎没问题:
但是,当我使用 VLC 播放随附的播放列表和片段时,我在日志中看到了这些故障:
mp4: Fragment sequence discontinuity detected 163497124 != 0
当 VLC 播放以下 DASH 播放列表时会发生此错误:
这是我的自定义片段构建器类的最新实现和附加说明:
Files.deleteIfExists(Path.of(m4sFilePath));
AACTrackImpl aacTrack=new AACTrackImpl(new FileDataSourceImpl(aacFilePath));
Movie movie=new Movie();
movie.addTrack(aacTrack);
Container mp4file=new ChunkFragmentM4sBuilder(seqNum).build(movie);
FileChannel fc=new FileOutputStream(m4sFilePath).getChannel();
mp4file.writeContainer(fc);
fc.close();