与 IVF stream 相比其中包含 32 字节编解码器 header 和 12 字节帧 header ,webm (vp9) 流 header 是什么样的?
是否有一个 header 结构定义可以在我的代码中使用来解析流?
请纠正我 - 但根据在线阅读,我猜 VP9 没有编解码器 header ,并且同时具有未压缩和压缩的帧 header 。 uncomp header 还会有 comp header 和帧数据的大小吗?
但我不知道如何获取它。
基本上我想要实现的是
- 一次循环一帧的 webm vp9 流
- 查找 header 的大小并将压缩数据发送到解码器
- 将指针前进当前帧大小
为了做到这一点,我需要知道 header 和压缩帧的大小。
最佳答案
WebM 与 Matroska 相同,只是允许使用的编解码器列表更窄。
Matroska 是 EBML 的架构规范文件。
也就是说,如果要解析WebM,就需要解析EBML。然后,您需要找到 Matroska 所需的元素。幸运的是,这是 very well documented .
您首先要检查 Tracks 元素 (0x1654AE6B
) 以获取有关编解码器的信息,您需要将其中继到解码器。
Cluster 元素 (0x1F43B675
) 将在 WebM/Matroska 流中一遍又一遍地重复,并包含数据 block 。
我强烈建议查看EBML Viewer 。它是一个古老的 Java 应用程序,但可以完成研究 WebM 和 Matroska 文件的工作。请注意,它不适用于流式文件,因为它们具有不确定的 Segment 元素大小。
当然,熟悉你的十六进制编辑器。一旦您开始识别元素类型,这也不算太糟糕!
关于video - webm (vp9) 视频流的 header 结构是什么样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77097083/