【发布时间】:2019-05-23 08:26:59
【问题描述】:
请参阅此文档以了解 mp4 文件格式,这是我发现的最清晰的格式之一: http://xhelmboyx.tripod.com/formats/mp4-layout.txt
如果您搜索: 4字节视频帧像素大小
您会找到包含该文本的行。
我如何知道距文件开头的偏移量,以便提取“帧视频大小”?
在哪里可以找到所有帧及其像素数据?
【问题讨论】:
标签: c++ mp4 video-processing
请参阅此文档以了解 mp4 文件格式,这是我发现的最清晰的格式之一: http://xhelmboyx.tripod.com/formats/mp4-layout.txt
如果您搜索: 4字节视频帧像素大小
您会找到包含该文本的行。
我如何知道距文件开头的偏移量,以便提取“帧视频大小”?
在哪里可以找到所有帧及其像素数据?
【问题讨论】:
标签: c++ mp4 video-processing
首先,链接文件很差 - 要真正理解 MP4 结构,您应该阅读 ISO 14496-12 标准 (zipped version here)。至于你的问题:
1) 你不能。没有固定的偏移量。由于存在强制框和可选框,因此结构可能会发生变化,因此在每个文件中,包含您想要的数据的 tkhd 框可以位于不同的偏移量。在最坏的情况下,您可以扫描文件以查找 tkhd 框 id,然后尝试解析该框(请参阅规范中的布局)。但请注意,可能有多个轨道。
2) 帧经过编码,因此您没有“像素数据”——您有必须解码的“压缩视频流”。可以计算实际偏移量。二进制数据位于mdat 框内,但您必须知道其他框的实际视频有效负载大小才能知道在哪里拆分它们。
【讨论】: