mp4 - 是否可以对 fmp4 中的片段进行重新排序和重组?

标签 mp4 http-live-streaming fmp4

我有 mp4 碎片,我想通过 HLS 发送给用户。如果我按原样发送就可以了。但我需要机会重新排列该视频中的片段。

例如初始视频,如下所示: original video format

我想重新组织片段并得到这个: expected video format

我尝试在本地制作它,它可以在 VLS 播放器(HLS)中运行。为此,我修改了 moof (mfhd) 中片段的序列号。但当我尝试远程播放(HLS)时,它不起作用。我认为,一些玩家(js)期望从每个片段中获得一些附加信息,例如时间偏移。但我找不到哪个原子(盒子)包含这个信息。我花了很多时间搜索,但我仍然处于问题的最初阶段。

我尝试修改片段序列号,但不起作用。

最佳答案

跟踪片段媒体解码时间框”(tfdt) 存储baseMediaDecodeTime,它是累积解码时间。

考虑以下...

  • baseMediaDecodeTime 对于每个 block 必须单调增加

  • 这意味着您必须用预期的下一个 tftd 条目更新(替换) block 的 tfdt 条目。

  • 当您天真地重新排序 block 时,baseMediaDecodeTime 将无效。

轨道片段媒体解码时间框”(tfdt) 位于每个 moof header 内部,位置为:

moof --> traf --> tfdt

关于mp4 - 是否可以对 fmp4 中的片段进行重新排序和重组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75210625/

相关文章:

ffmpeg 无法在 mp4 文件中重新保存一个 channel

android - 如何将 GIF 转换为 Mp4?

ffmpeg - HLS MP4 独立段

Node .js : fluent-ffmpeg throws error when converting mp4 to mp3

ffmpeg youtube 直播在一段时间后停止

video.js - 使用 video.js 是否可以获得当前的 HLS 时间戳?

ffmpeg 创建一个 mp4 流,导致 Firefox 出错

ffmpeg - FMP4 moof box序列号排序

iphone - 从 iPhone 到另一台设备(浏览器或 iPhone)的实时音频/视频流