background image

录完了声音,刚才我们只是说把录音录完了生成一个文件过程,这时候我们想把通过文件
的方式发出去就要进行云的编解码,我们看一张图,这张图展示了从录音到最后保存到硬
盘文件的过程,录音它最先录制成

PCM 的格式,再转成 AAC,中间经过 CODEC 这里面

就是一个编码解码器主要作用是对音频信号进行压缩和解压缩。我们讲讲它一个基本过程,
首先从话筒里面录制

PCM 出去,这个 CODEC 把 PCM 转换成 AAC 格式,把 AAC 写成硬

盘文件,就三步就可以达到一个效果,中间一个

CODEC 起到转码的过程,就了解到它怎

么录出数据格式的办法。
刚刚讲

CODEC,重点转移到 CODEC 里面,这个 CODEC 我们在录制的声音可能很多我们

想要的声音并不是

IOS 支持的,我们看看 IOS 支持的这些 CODEC,包括我们刚刚提到这

些格式这是默认的

CODEC,而我们在平时的应用中或者说开发中可能我们想要提供更加

广泛的比如说

MP3、WMA、MIDI、OGG、Speex 可能大家之前不了解,但是我们今天了解一

下到底是什么样的语音格式。我们想要录制这些格式,但是

IOS 没有默认支持的 CODEC,

怎么办呢?我们可以用开源的

CODEC,因为 CODEC 是一些服务商提供的,他可能是收费

的,我们这里可以看看哪些开源的

CODEC 可以使用,它的工程在网上有很多开源的厂商

提供了都是免费的,我们看

Speex。

Speex 是一个压缩比较好的、便于网络传输的,而且有一些降噪的功能,这个就是说他比较
适合的语音聊天,还有

LAME 这个格式,还有苹果的 Lossless,这是去年年底才开源一个

项目,这是苹果无损压缩的

CODEC。还有 FLAC 这个是免费的无损 CODEC,还有 LBC 也

是适合于网络传输的

CODEC。

我们下载到

CODEC 以后这时候有一个比较难的技术门槛,有了 CODEC 以后我们怎么编

程我们

IOS 连接库呢?因为要用 PCM,要拿到链接库,这就需要编译了,我们先了解

Xcode,我们 Xcode 为了让我们支持更好的 IOS 设备,比如说 IPHONE2 或者 3,更低版设
备我们就需要更多的处理器架构。首先我们看

Xcode 需要哪些处理架构呢?

I386、ARMv6、ARMv7。我们知道这个处理架构以后,我们就要编译我们的 CODEC,首先编
译一个适合

I386 的 CODEC,还有 V6、和 v7 的,我们编译好了以后才能拿来具体使用。编

译的方式我再跟大家提一下。
我们有了编译好的链接库以后就可以使用

CODEC 编码器和解码器。编码过程是这样的,首

先录制完了以后,因为我们想录制成为我们自己的

CODEC 地所以我们默认为 PCM 文件,

PCM 在 IOS 录制出来是一个 WAV 的文件格式,因为它不仅是一个数据,还要成为一个文
件在我们播放器里播放的。我们看

WAV 格式,我们可以看到在网上可以搜到资料,这里面

的数据结构有很多块信息,但是我们最后可以了解到,我们真正需要的是这个块数据,我
们通过数据格式最后拿到这个,我们知道数字结构以后我们可以拿到采样数据,这个我相
信大家知道一点,知道怎么去拿,不知道也可以线下交流一下。然后我们拿采样数据已经扣
上了,压缩成我们想要的目标格式。最后我们压缩的数据格式还不行,因为我们录制好的格
式不光是用设备传输,可能我们还用别的平台,比如说

IPHONE 给 ANDROID 传送的文件,

因为不知道压缩是什么东西,这时候加一个文件结构,我们重新组装压缩后的文件结构,
这样别人才知道我压缩后的文件是什么格式。这是一个编码过程。
这个编码完成之后,我们就可以把这个数据放在另外一个设备了,编码结束了。别人拿了数
据以后肯定考虑播放了,这个数据怎么处理之前我们先讲讲

IOS 播放怎么实现,IOS 支持

播放的格式,跟录音的格式是差不多,只是多了一个

MP3 和 ILBC 的格式,多了 MP3 解码

的一个支持。我们看看播放怎么用,相对录来说播放简单多了,首先这个传输的值可以从文
件里面提取过来的数据就可以了,然后准备播放开始播放,就可以播放出来了,很简单。
AAC 文件播放过程是怎么做的?首先跟录音过程是相反的,首先是解码,解码放到里面
播放,读取

AAC,播放 PCM 文件。