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

问题描述 投票:0回答:1

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

是否有一个标头结构定义可以在我的代码中使用来解析流?

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

但我不知道如何获取这个。

基本上我想要实现的是

  • 一次一帧循环浏览 webm vp9 流
  • 找到头部的大小并将压缩后的数据发送到解码器
  • 将指针前进当前帧大小

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

video video-streaming decoding webm vp9
1个回答
0
投票

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

Matroska 是 EBML 文件的模式规范。

也就是说,如果要解析WebM,就需要解析EBML。然后,您需要找到 Matroska 所需的元素。幸运的是,这是有很好的记录

您首先要检查 Tracks 元素 (

0x1654AE6B
) 以获取有关编解码器的信息,您需要将其转发到解码器。

Cluster 元素 (

0x1F43B675
) 将在 WebM/Matroska 流中一遍又一遍地重复,并包含数据块。

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

当然,熟悉你的十六进制编辑器。一旦你开始认识元素类型,这也不算太糟糕!

© www.soinside.com 2019 - 2024. All rights reserved.