iOS中的音频 (iOS audio)

翻译自国外教程:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值