首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java mp4parser片段序列不连续

Java mp4parser片段序列不连续
EN

Stack Overflow用户
提问于 2021-10-23 07:31:26
回答 1查看 281关注 0票数 0

此用例是一种服务,它手动地将一系列未压缩的.wav媒体段编码成.m4s片段,通过MPEG-破折号进行广播,使用ffmpeg将.wav压缩到.aac,并使用sannies/mp4解析器将aac音频组装成.m4s媒体片段。

我创建这个公共GitHub项目是为了完整地再现这个问题。

例如,下面是定制的ChunkFragmentM4sBuilder.java类。

这个日志来自ChunkFragmentM4sBuilderTest.java,它导致连接的测试输出test-java-mp4parser.mp4似乎没有问题:

但是,当我使用VLC播放附带的播放列表和片段时,我会在日志中看到以下故障:

代码语言:javascript
复制
mp4: Fragment sequence discontinuity detected 163497124 != 0

当VLC播放以下破折号播放列表时,会发生此错误:

下面是我的自定义片段构建器类的最新实现和其他注意事项:

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-23 15:20:01

VLC消息只是一个信息条目,而不是一个错误。这是预期的,因为起始序列号对应于活边。

你不能回放该显化,一旦现场边缘过去的时间,最后一段提供的3。您需要继续生成与当前时间相对应的新段。

您可以通过使清单静态、添加段列表和修改开始号来轻松测试这一点。

您的段看起来是自初始化的,但没有这样声明,这将导致问题。它还浪费带宽,因为您已经提供了初始化段。

作为提醒,你应该有:

  • 带有ftypmoov的init段
  • 带有styp (可选)、moofmdat的一系列媒体片段
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69686039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档