哪些字节的视频数据是指当前播放位置

use*_*088 3 javascript media mp4 html5-video media-source

我正在使用媒体源扩展在浏览器中播放视频。

我的 JavaScript 程序将视频文件分成 1200 字节的片段。视频使用以下编解码器进行编码:video/mp4;编解码器 =“avc1.42E01E,mp4a.40.2”。
以秒为单位给出时间 X 我想找到在位置 X 播放视频所需的相应第一个片段(或靠近但不在此位置之后的片段)。更具体地说,我想在HTMLMediaElement的currentTime属性中找出哪个片段属于时间。可以预先分析视频文件。

Sve*_*nov 5

有多种方法可以在 mp4 文件中指定持续时间-> 片段映射。

  • ISO/IEC 14496-12 中定义的subsegment indexsidx简称)框将来自输入文件的字节范围与相应的持续时间相关联。

这是 sidx 框内容的片段:

subsegment 0 size 726463 dur 450450
subsegment 1 size 723260 dur 450450
subsegment 2 size 713278 dur 450450
subsegment 3 size 441644 dur 450450
... and so on ...
Run Code Online (Sandbox Code Playgroud)

找到给定时间的片段X是微不足道的。

  • 大多数mp4文件没有一个sidx框,而是一个stszstts将一系列样本(视频或音频帧)映射到持续时间+大小的框。这是和示例:

stsz 盒子:

sample 0 size 105222
sample 1 size 1554
sample 2 size 2153
Run Code Online (Sandbox Code Playgroud)

stts盒:

3 sample each with dur 512
Run Code Online (Sandbox Code Playgroud)

stts框给出了 stsz 中定义的样本的持续时间

  • 可能还有其他方法。这份清单并不详尽