【问题标题】:Using Vorbis without Ogg?在没有 Ogg 的情况下使用 Vorbis?
【发布时间】:2012-06-09 01:51:48
【问题描述】:

我想知道为什么 Vorbis 需要任何容器?我知道您可以将 Vorbis 放在 Ogg 容器或 Matroska 容器中,但如果我不打算将它与任何视频或任何其他多媒体捆绑在一起,为什么 Vorbis 数据不能独立存在于自己的文件中?

有人有这方面的经验吗?我在搜索之前用谷歌搜索过,我只在 oggvorbis 邮件列表中找到了一个没有详细信息的提及。

【问题讨论】:

  • 没有什么能阻止您,但您可能需要编写自己的解码器二进制文件。这就像问是否可以使用没有标题和各种字段的原始压缩 gzip 数据,如果您提前知道它们将被硬编码成什么。从技术上讲是的,您最终可能会得到小几个字节的数据文件,但为了不必重新发明轮子,通常不这样做会容易得多。
  • 我实际上并不是为了节省磁盘空间而问这个问题。我之所以问,是因为我将不得不为音频编写自己的解码器(由于许可原因),而且处理 ogg 包装器的额外复杂性似乎不值得。

标签: ogg oggvorbis vorbis matroska


【解决方案1】:

完全有可能。您无需事先知道任何 Vorbis 数据包的长度(无论它们是标头还是音频)即可对其进行解码。如果没有 Ogg 包装器(或替代包装器),您会错过一些东西,但它们可能对您的应用程序并不重要:

  • 页面校验和 - 如果您从磁盘或其他相当可靠的来源读取数据,则不太重要
  • 页面粒度/最后一个样本位置 - 有助于提高搜索性能,并用于指定

但是,您可以通过以下方式轻松地从 ogg 文件(假设其中只有一个 Vorbis 流)生成纯 Vorbis 字节流:

  1. 跳过 26 个字节
  2. n = 读取 1 个字节
  3. countOfBytesToRead = 下一个 n 字节的总和
  4. countOfBytesToRead 字节读入您的 Vorbis 字节流
  5. 重复 1-4 直到 Ogg 文件用完

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 2011-06-12
    • 2011-05-19
    • 2013-12-14
    • 2011-02-08
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    相关资源
    最近更新 更多