发布网友 发布时间:2023-03-23 13:21
共1个回答
热心网友 时间:2023-10-14 22:27
对于音频我们需要一下储备知识,这篇文章主要介绍Audio的基础知识,我们需要知道音频的采样率、采样频率、采样位数、通道数、帧、音频周期、音频数据格式、iOS支持的文件格式和iOS对音频处理的一些框架等等。
采样率:
8000 Hz - 电话所用采样率, 对于人的说话已经足够
11025 Hz-AM调幅广播所用采样率
22050 Hz和24,000 Hz- FM调频广播所用采样率
32000 Hz - miniDV 数码视频 camcorder、DAT (LP mode)所用采样率
44100 Hz - 音频 CD, 也常用于 MPEG-1 音频(VCD, SVCD, MP3)所用采样率
47250 Hz - 商用 PCM 录音机所用采样率
48000 Hz - miniDV、数字电视、DVD、DAT、电影和专业音频所用的数字声音所用采样率
50000 Hz - 商用数字录音机所用采样率
96000 或者 192,000 Hz - DVD-Audio、一些 LPCM DVD 音轨、BD-ROM(蓝光盘)音轨、和 HD-DVD (高清晰度 DVD)音轨所用所用采样率
2.8224 MHz - Direct Stream Digital 的 1 位 sigma-delta molation 过程所用采样率。
比特率:每秒的传输速率(位速, 也叫比特率)这个概念不是音频仅有。如48.2kbps 或 48200bps, 其中的 b 是 bit, ps 是每秒的意思,表示每秒48200bit的容量.
采样频率指的是每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。由于人耳的分辨率很有限,太高的频率并不能分辨出来。
日常生活照常用的采样率22050, CD音质的采样率是44100。
采样位数:即采样值或取样值(就是将采样样本幅度量化)即记录的是声波的振幅。它是用来衡量声音波动变化的一个参数,它的数值越大,分辨率也就越高,即声音越细腻,所发出声音的能力越强。例如8位代表2的8次方—256,16位则代表2的16次方—64K。比较一下,一段相同的音乐信息,16位采样位数能把它分为64K个精度单位进行处理,而8位采样位数只能处理256个精度单位,造成了较大的信号损失,所以前者记录了音频更多的细节。下面列一些对比:
通道数:即声音的通道的数目。通常分为单声道和立体声,单声道的声音只能使用一个喇叭发声,而立体声可以使两个喇叭都发声更能感受到空间效果,当然还有更多的通道数。
需要注意的是:如果是双声道, 那么采样就是双份的, 文件也差不多要大一倍.
帧:帧记录了一个声音单元,其长度为样本长度(采样位数)和通道数的乘积。
周期:音频设备一次处理所需要的帧数,对于音频设备的数据访问以及音频数据的存储,都是以此为单位。
交错模式:数字音频信号存储的方式。数据以连续帧的方式存放,即首先记录帧1的左声道样本和右声道样本,再开始帧2的记录。
非交错模式:首先记录的是一个周期内所有帧的左声道样本,再记录所有右声道样本。
音频压缩技术指的是对原始数字音频信号流(PCM编码)运用适当的数字信号处理技术,在不损失有用信息量,或所引入损失可忽略的条件下,降低(压缩)其码率,也称为压缩编码,它有两种压缩方式,分别是有损压缩(降低音频采样频率与比特率,输出的音频文件会比原文件小)和无损压缩(无损压缩能够在100%保存原文件的所有数据的前提下,将音频文件的体积压缩的更小,而将压缩后的音频文件还原后,能够实现与源文件相同的大小、相同的码率)。例如MP3、WMA、OGG被称为有损压缩,无损压缩格式有APE、FLAC、WavPack、LPAC、WMALossless、AppleLossless、La、OptimFROG、Shorten。而常见的、主流的无损压缩格式只有APE、FLAC。
在iOS中可以使用Audio Convert Services提供的服务来完成音频数据格式转换,可以完成下面三种类型转换。
在录制音频的时候不推荐使用AAC和MP3格式,它们耗电和消耗CPU性能。苹果推荐使用下面这个些格式。
音频数据格式有三种数据包:
Core Audio是苹果对音频处理的框架,分为三层接口,底层我们不能够直接使用,所以接下来主要介绍,中层和高层的接口。如下图所示。
Audio Unit 是所有 iOS 以及 OS X上音频框架的最底层,无论使用的是 AVAudioRecorder、AVAudioPlayer、或者 Audio Queue Service、OpenAL 等,最终底层实现都是通过 Audio Unit 来完成的。
在 iOS 上可用的 Audio unit 是有限的,OS X上面可以自定义一个 Audio unit 但是 iOS 上不行,只能使用系统提供的 Audio unit。
但是什么时候使用 Audio Unit ?官方的说法是,当你需要高度可控的、高性能、高灵活性或者需要某种特别的功能(比如回音消除,只在 Audio unit 提供支持,所有高层 API 均不支持回音消除)的时候,才需要使用 Audio unit。
Audio units: 它封装在在头文件AUComponent.h中。iOS Audio units 使用8.24位定点线性PCM音频数据进行输入和输出。iOS提供有4类Audio units 如下面所列, 而在OS X中大概有40多个Audio units 。
注:关于Core Audio的实战更新中......
参考: http://www.code06.com/other/aoshilang2249/92451.html