我想知道为什么Vorbis需要任何容器?我知道您可以将 Vorbis 放入 Ogg 容器或 Matroska 容器中,但如果我不打算将其与任何视频或任何其他多媒体捆绑在一起,为什么 Vorbis 数据不能单独保存在自己的文件中?
有没有人有这样做的经验?我在搜索SO之前用谷歌搜索了一下,我只在oggvorbis邮件列表中找到了一个提及,没有详细信息。
这是完全可能的。您无需事先知道任何 Vorbis 数据包的长度(无论是标头还是音频)即可对其进行解码。如果没有 Ogg 包装器(或替代包装器),您将错过一些东西,但它们对您的应用程序可能并不重要:
- 页面校验和 - 如果您从磁盘或其他相当可靠的来源读取,则不太重要
- 页面颗粒/最后一个样本位置 - 可用于提高搜索性能和指定
但是,您可以通过以下方式从ogg文件(假设其中只有一个Vorbis流)非常简单地制作纯Vorbis字节流:
- 跳过 26 个字节
-
n
= 读取 1 字节 -
countOfBytesToRead
= 接下来的n
字节的总和 - 将
countOfBytesToRead
字节读入 Vorbis 字节流 - 重复 1-4,直到 Ogg 文件用尽