翻译自国外教程:
http://www.raywenderlich.com/204/audio-101-for-iphone-developers-file-and-data-formats
http://www.raywenderlich.com/233/audio-101-for-iphone-developers-converting-and-recording
一个音频文件实际上有两方面:
文件格式:描述了文件本身的格式
数据格式(音频编码):一个音频文件中的数据可以以多种方式来编码。
举例来说,CAF是文件格式,一个CAF文件中的数据,可以是MP3,线性PCM,或是其它很多种的格式。
如下讲述iPhone中支持的所有数据格式。
1. AAC
AAC是"Advanced Audio Coding"的缩写,它是作为MP3的继任者来设计的。这种格式将原始的声音进行压缩,节省磁盘空间,但是会带来质量的损失。但是质量的损失取决于比特率,有时损失的质量并不明显。在低比特率(低于128K)时,它的压缩率高于MP3.
2. HE-AAC
是AAC的超集,HE代表"High Efficiency"。它针对低比特率的音频例如流音频,做了优化。
3.AMR
代表"Adaptive Multi-Rate",该格式针对语音进行了优化,其特点是比特率非常低。
4.ALAC
另外也被称为"Apple Lossless,该格式压缩音频数据时,没有任何质量损失。压缩率一般在40%到60%。编码后的数据,可以以很快的速度进行解码,这一点对于iPhone或是iPod设备,特别好。
5.iLBC
也是一种针对语音进行优化的格式,有利于VOIP和流音频。
6. IMA4
该格式以4:1的压缩比,对16比特的音频文件进行压缩。这是iPhone上一种非常重要的编码。
7.线性PCM
用于将模拟的声音数据,转换为数字格式。简单的来,其意味着未压缩的数据。基于此,该格式的文件播放起来非常快,当空间大小不是问题的时候,应优先选择该格式。
根据数据存储方式的不同,线性PCM有一些变种。数据的存储可以是big-endian, little-endian,浮点数或整数,或是变宽度。
iPhone上优先使用的是little-endian, integer, 16-bit,或简称为LEI16。
在MAC OS X上,对应的是native-endian, floating point, 32-bit。
8. u-law 和 a-law
也是将模拟数据转换为数字格式,但是是针对语音而不是线性PCM进行优化。
9.MP3
我们都知道该格式,其非常的流行,并且也被iPhone所支持。
那么我们该如何选择这些格式呢?首先,我们要知道如下2点:
1. 象线性PCM,IMA4等其它不进行压缩或是简单压缩的格式,我们可以非常快速,且同时播放。
2. 更高级的压缩方法例如AAC, MP3和ALAC,iPhone的硬件支持,可以很快的对数据进行解压缩。但问题是,每次只能处理一个文件。如果要同时播多个文件,就只能用软解压了,这样就非常慢了。
选择格式时的通用原则:
1.如果空间大小不是问题,使用线性PCM格式。这样,音频不但播放起来非常快,而且同时播放多个文件时,也不用担心会带来CPU的资源问题。
2.如果空间大小是问题,那么背景音乐使用AAC编码,音效使用IMA4.
iPhone支持的音频文件格式
这些格式包括:.mp3, .aac, AIFF, CAF以及WAVE。最重要的一点是,我们通常可以只用CAF,因为它的数据格式可以是iPhone所支持的任意一种格式。CAF是iPhone上的优选格式。
比特率:
比特率指的是一个音频文件,每秒钟所包含的字节数。一些格式如AAC或是MP3等可以让你指定比特率。
常见的比特率:
32kbit/s:AM广播的质量。
48kbit/s: 长时间语音播客所适用
64kbit/s:一般长度的语音播客所适用
96kbit/s:FM广播的质量
128kbit/s:MP3音乐常用
160kbit/s:音乐家或是敏感的听者,会优先选择该比特率而不是128kbit/s。
192kbit/s:数字广播的质量
320kbit/s: Virtually indistinguishable from CDs
>500kbit/s: Lossless audio encoding such as linear PCM
采样率:
几乎总是使用44,100HZ。
MAC OS X上提供了三个内建的命令行工具:
afplay:播放一个音频文件
afinfo:可以显示一个音频文件的文件格式,数据格式,比特率等其它有用的信息。
afconvert:afconvert -d [out data format] -f [out file format] -b [bit rate] [in file] [out file]
转自: http://blog.csdn.net/buptwsgwang/article/details/7779596