内部如何组织文件(尤其是音频文件)?

时间:2010-05-01 13:17:09

标签: c objective-c audio filesystems

我试着说:Apple正在谈论音频文件中的“数据包”,并且有一个名为AudioFileReadPackets的花哨功能需要大量参数。其中一个指定“开始数据包”,另一个指定要读取的数据包数。

所以我想象一个内部看起来像这样的音频文件:它由很多数据包组成。如果它是具有可变比特率格式的音频文件,则每个分组可具有不同的大小。如果文件具有恒定的比特率格式,则每个数据包的大小相同。因此,音频文件就像一个装满盒子的卡车,每个盒子都包含一些有趣的东西。

这是对的吗?它适用于任何类型的文件吗?文件实际上是这样的吗?

5 个答案:

答案 0 :(得分:1)

“数据包”在我看来就像Apple特有的术语。我只是做了大量的阅读和编码来处理WAV和MP3文件,我不相信我曾经看过“数据包”一词。

答案 1 :(得分:1)

问题(即使是“特别是音频文件”资格)太宽泛了;不同的文件格式是不同的!

因此,要回答这个问题,首先必须指定特定的文件类型;那么问题的答案总是要看它的规格。专有格式可能没有公开的规范。

许多文件(官方和逆向工程)的规格可以在辉煌的Wotsit's Format网站上找到。

Apple iTunes和其他人使用的AAC由ISO/IEC 13818-7:2006定义。该文件将花费您252瑞士法郎(约233美元)!您必须真正感兴趣(商业上)支付而不是使用现有的AAC编解码器。

“数据包”是数据传输中常用的术语,因此可能比音频文件更适用于音频流,其中“帧”可能更合适,或者对于数据文件通常是“记录”,但是术语很灵活,因为它意味着编写它的人认为它意味着什么!如果有足够的人滥用一个术语,它基本上被重新定义(或多次定义)意味着,所以我不会太过于沉溺于此。作者确实怀疑使用它来定义一个单元,它在一个文件中有一个已定义的格式,该文件中有多个这样的单元顺序重复。

答案 2 :(得分:1)

文件包含创建它们的应用程序选择放置在它们中的任何内容。文件本质上是一个字节序列。任何进一步的组织都是由创建它们的程序所做的语义区分。想到包含相同结构的所有文件是不正确的。

尽管如此,某些数据存储问题相似,足以以类似方式解决,并且模式开始出现。将数据拆分成记录或数据包就是一个例子。

答案 3 :(得分:0)

这几乎就是音频文件的样子:一系列数据块或帧。 AudioFileReadPacketData和AudioFileReadPackets可以保护您免受例如帧的大小(以字节为单位)的细节(因为您可能正在从WAV文件中读取,该文件具有与MP3文件不同的结构,或者您的MP3文件使用可变位率)。

框架的概念通常不适用于任何文件,但您不会使用音频文件服务API来访问任何旧文件。

答案 4 :(得分:0)

对于MP3(和MP1,MP2),文件由帧组成。是的,你的理解是正确的 - 在VBR文件中包的大小不同。在WAV文件中,如果内存服务,数据包的长度相同(我11年前写过一个解码器/播放器)。