与包含 32 字节编解码器标头和 12 字节帧标头的 IVF 流相比,webm (vp9) 流标头是什么样的?
是否有一个标头结构定义可以在我的代码中使用来解析流?
请纠正我 - 但根据在线阅读,我猜 VP9 没有编解码器标头,并且同时具有未压缩和压缩的帧标头。 另外,uncomp 标头将具有 comp 标头和帧数据的大小?
但我不知道如何获取这个。
基本上我想要实现的是
为了做到这一点,我需要知道标头和压缩帧的大小是多少。
WebM 与 Matroska 相同,只是允许使用的编解码器列表更窄。
Matroska 是 EBML 文件的模式规范。
也就是说,如果要解析WebM,就需要解析EBML。然后,您需要找到 Matroska 所需的元素。幸运的是,这是有很好的记录。
您首先要检查 Tracks 元素 (
0x1654AE6B
) 以获取有关编解码器的信息,您需要将其转发到解码器。
Cluster 元素 (
0x1F43B675
) 将在 WebM/Matroska 流中一遍又一遍地重复,并包含数据块。
我强烈建议您查看EBML Viewer。它是一个古老的 Java 应用程序,但可以完成研究 WebM 和 Matroska 文件的工作。请注意,它不适用于流文件,因为它们具有不确定的段元素大小。
当然,熟悉你的十六进制编辑器。一旦你开始认识元素类型,这也不算太糟糕!