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

Posted

技术标签:

【中文标题】哪些字节的视频数据指的是当前播放位置【英文标题】:Which bytes of video data refer to the current playback position 【发布时间】:2016-05-21 21:42:06 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

这是一个 sidx 框内容的 sn-p:

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 ...

找到给定时间X 的片段很简单。

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

stsz 框:

sample 0 size 105222
sample 1 size 1554
sample 2 size 2153

stts 框:

3 sample each with dur 512

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

可能还有其他方法。此列表并不详尽

【讨论】:

以上是关于哪些字节的视频数据指的是当前播放位置的主要内容,如果未能解决你的问题,请参考以下文章

关于播放格式的问题

LCD图片显示触摸屏音乐播放缩放图片和播放视频

iOS音频播放录音视频播放拍照视频录制

FFmpeg学习6:视音频同步

常用的播放文件格式?

实现video视频播放记录当前播放进度,下次播放时从上次播放进度开始播放