webm (vp9) 视频流的标头结构是什么样的?

What does the header struct for a webm (vp9) video stream look like?

提问人:Anil 提问时间:9/13/2023 更新时间:9/14/2023 访问量:91

问:

与包含 32 字节编解码器标头和 12 字节帧标头的 IVF 流相比,webm (vp9) 流标头是什么样子的?

是否有可以在代码中用于分析流的标头结构定义?

请纠正我 - 但根据在线阅读,我猜 VP9 没有编解码器标头,并且同时具有未压缩和压缩的帧标头。 此外,uncomp 标头将具有 comp 标头和帧数据的大小?

但我不确定如何获取它。

基本上,我想要实现的是

  • 一次循环一帧地遍历 webm vp9 流
  • 找到标头的大小,并将压缩数据发送到解码器
  • 按当前帧大小前进指针

为了做到这一点,我需要知道标头和压缩帧的大小是多少。

视频 解码 WebM VP9

评论


答:

2赞 Brad 9/14/2023 #1

WebM 与 Matroska 相同,只是允许使用的编解码器列表更窄。

Matroska 是 EBML 文件的模式规范。

也就是说,如果要解析 WebM,则需要解析 EBML。然后,您需要找到 Matroska 所需的元素。幸运的是,这是有据可查的。

首先需要检查 Tracks 元素 () 以获取有关编解码器的信息,您需要将这些信息中继到解码器。0x1654AE6B

Cluster 元素 () 将在 WebM/Matroska 流中一遍又一遍地重复,其中包含数据块。0x1F43B675

我强烈建议您查看 EBML Viewer。这是一个古老的 Java 应用程序,但可以完成研究 WebM 和 Matroska 文件的工作。请注意,它不适用于流式文件,因为它们具有不确定的 Segment 元素大小。

当然,还可以舒适地使用十六进制编辑器。一旦你开始识别元素类型,这还不错!

EBML Viewer

评论

0赞 Anil 9/14/2023
非常感谢@brad......说有帮助是轻描淡写的。对于在这里绊倒的其他人来说,MKVToolNix 工具似乎略微抛光,可以显示块的十六进制转储。
1赞 Brad 9/15/2023
@Anildas 很高兴为您提供帮助,并感谢您提供指向其他工具的链接!我以前没用过...我去看看。