题
我工作的一个C图书馆读的标签的信息,从音乐文件。我已经有ID3v2的照顾,但我不能找出如何Ogg文件的结构。
我打开一个.ogg文件在hexeditor我可以找到标记的数据,因为这是所有人的可读性。但是,一切都从一开始就文件的标记数据看起来像垃圾。这是如何的数据编码的?
我不需要任何帮助在实际代码,我只是需要帮助的可视化什么Ogg头看起来像什么编码,它使用所以我,我可以读它。我想用一个非哈克的方法阅读Ogg文件。
我已经看过的 简单的格式, ,其中已有帮助的。
这个简单的文件,我看了大约350个字节之间的"简单的"身份识别特征和人类的可读性的评论部分,没有它是人类的可读我的六编,所以我敢肯定有 的东西 重要的是在那里。
我使用Linux,我没有意迁移到Windows或OS X.所以如果我需要使用glibc唯一的功能转换的编码,我很好。
解决方案
如描述该链接提供,下列元数据块之间可能发生的"简单的"标记和VORBIS_COMMENT元数据块。
- STREAMINFO:这块有有关的信息的整个流,如采样率,道数量的样本总数,等等。它必须本作为第一个元数据的框在流。其它的元数据块可以遵循,并且那个解码器不明白,它将跳过。
- 应用程序:这块是用于由第三方应用程序。唯一的强制性领域是一个32位识别符。这个标识给予应请求向一个应用程序通过简单的维护者。其余的区块定义的注册申请。访问登记页面,如果你想登记的证件应用程序后手.
- 填充:这块允许任意数量的填充。内容填充块没有任何意义。这块是用时已知的是,元数据将经过编辑之后编码;用户可以指示的编码器保留一个填充的框足够大的尺寸,以便元数据时加入,它将只复盖的填充(这是相对快速的),而不是插入到正确的位置在现有的文件(通常需要重写整个文件)。
- SEEKTABLE:这是一个可选择的方框用于存储寻求点。它可能寻求任何特定样品,在一个简单的流而寻求表格,但是拖延是不可预知的因率可能有所不同内广泛流。通过加入寻求指向一个流,这种延迟可以显着减少。每一个寻求点需要18字节,因此,1%的决议内流的增加少于2k。只能有一个SEEKTABLE在流,但该表格可能有任何数目的寻求点。还有一个特殊的'占位'seekpoint这会被忽略的解码器,但它可以用来保护区的空间来寻求点插入。
只是在上面的描述,也有规范的格式每个这些区块。链接也说
所有数字中使用一个简单的流是一个整数;有没有浮点表示。所有数字都是big-endian编码。所有号码都是无符号,除非另有规定。
那么,什么是你失踪了?你说
我想就非哈克的方法阅读Ogg文件。
为什么重新写入一个图书馆做到这时已经存在吗?
其他提示
在奥格文件格式记录 rel="noreferrer">。有一个非常好的图形可视化,你有详细的书面说明请求。
您可能也想看看 libogg 这是一个阅读开源BSD许可库和写入Ogg文件。
不隶属于 StackOverflow