Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compression 在mdat中查找关键帧_Compression_Quicktime_Iso_Mpeg 4 - Fatal编程技术网

Compression 在mdat中查找关键帧

Compression 在mdat中查找关键帧,compression,quicktime,iso,mpeg-4,Compression,Quicktime,Iso,Mpeg 4,quicktime文档建议使用以下方法查找关键帧: 寻找关键帧 在电影中查找指定时间的关键帧稍微复杂一些 比在指定时间内找到样本更复杂。媒体 处理程序必须使用同步采样原子和采样原子的时间 一起寻找关键帧 介质处理程序执行以下步骤: 检查对原子进行采样的时间,以确定包含指定时间的数据的样本号。 扫描同步样本原子以查找在步骤1中选择的样本编号之前的关键帧。 扫描样本到区块原子,以发现哪个区块包含关键帧。 从块偏移量原子提取到块的偏移量。 使用样本大小原子查找块内的偏移量和样本大小。 资料来源: 这是

quicktime文档建议使用以下方法查找关键帧:

寻找关键帧

在电影中查找指定时间的关键帧稍微复杂一些 比在指定时间内找到样本更复杂。媒体 处理程序必须使用同步采样原子和采样原子的时间 一起寻找关键帧

介质处理程序执行以下步骤:

检查对原子进行采样的时间,以确定包含指定时间的数据的样本号。 扫描同步样本原子以查找在步骤1中选择的样本编号之前的关键帧。 扫描样本到区块原子,以发现哪个区块包含关键帧。 从块偏移量原子提取到块的偏移量。 使用样本大小原子查找块内的偏移量和样本大小。 资料来源:

这是相当混乱的,因为多个轨道的trak原子将产生不同的偏移量。例如,视频轨迹的关键帧采样块偏移值将是一个值,音频将是另一个值


如何将上述说明转换为文件或mdat atom中的某个位置?

不限于关键帧。一般来说,您不能保证不同轨迹的采样在文件中彼此接近。您希望音频和视频可以交错播放,这样您就可以在不进行过度搜索的情况下播放电影,但这取决于创建文件的软件。每个轨迹都有自己的样本表和块原子,它们告诉您样本在文件中的位置,它们可能在任何地方。它们甚至可能位于不同的文件中,尽管参考电影现在已被弃用,因此您可能可以忽略它们。

感谢rolf-尽管视频trak中样本的关键帧会与iframe的偏移匹配(例如,使用ffprobe来查找)是真的吗?