当前位置: 首页 > 知识库问答 >
问题:

Javamp4parser片段序列不连续性

闻人鸿文
2023-03-14

此用例是一项服务,它手动将一系列未压缩的. 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();
  • ChunkFragmentM4sBuilderTest。日志txt

共有1个答案

端木朝
2023-03-14

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

一旦实时边缘超过了提供的3个片段中的最后一个片段的时间,您就无法播放该清单。您需要继续生成与当前时间相对应的新片段。

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

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

提醒您:

  • 带有ftypmoov
  • 一系列带有styp(可选)、moofmdat
 类似资料:
  • 我试图在Oracle 11g中运行一个sql查询,它将下面给定的数据集转换为下一个数据集。 这样做的逻辑是start date1和end date1将是连续的。另外start_date2和end date2需要是连续的。如果在某些时候end date2与下一个start date2不匹配,那么需要添加一个具有相同id并且具有enddate2作为下一个start date1的新行。 非常感谢您的帮助

  • 给定一个有N个元素的数组A,我想在A的所有可能的连续子序列中找到最小元素的总和。我知道如果N很小,我们可以寻找所有可能的子序列,但是当N高达10^5时,找到这个总和的最佳方法是什么? 示例:设 N=3 且 A[1,2,3] 则 ans 为 10,作为可能的连续子序列 {(1),(2),(3),(1,2),(1,2,3),(2,3)} 因此最小元素之和 = 1 2 3 1 1 2 = 10

  • 问题内容: 如果我有串,我要检查,如果它作为一个连续存在 串 中,我可以使用: 在非连续子 序列 的情况下,我可以使用什么?例: 问题答案: 我不知道是否有内置功能,但是手动操作相当简单

  • 问题内容: 我有一个pandas.DataFrame,它在连续的时间点进行了测量。与每次测量一起,被观察系统在每个时间点都有不同的状态。因此,DataFrame还包含一列,其中包含每次测量时系统的状态。状态更改比测量间隔慢得多。结果,指示状态的列可能看起来像这样(索引:状态): 是否有一种简单的方法来检索连续相等状态的每个段的索引。那意味着我想得到这样的东西: 结果也可能与普通列表有所不同。 到目

  • NowCoder 题目描述 输出所有和为 S 的连续正数序列。 例如和为 100 的连续序列有: // [9, 10, 11, 12, 13, 14, 15, 16] [18, 19, 20, 21, 22]。 解题思路 // java public ArrayList<arraylist> FindContinuousSequence(int sum) { ArrayList<arr

  • 我为这个问题写了一个方法:输入:整数数组返回:最长连续整数序列的长度。like:对于{9,1,2,3},返回3,因为{1,2,3} 这个方法运行得不好。希望有人能帮我调试。 非常感谢!!!