音频开发篇一

预备知识

对于音频我们需要一下储备知识,这篇文章主要介绍Audio的基础知识,我们需要知道音频的采样率、采样频率、采样位数、通道数、帧、音频周期、音频数据格式、iOS支持的文件格式和iOS对音频处理的一些框架等等。

1、采样率、比特率:

采样率
        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 modulation 过程所用采样率。
        比特率:每秒的传输速率(位速, 也叫比特率)这个概念不是音频仅有。如48.2kbps 或 48200bps, 其中的 b 是 bit, ps 是每秒的意思,表示每秒48200bit的容量.

2、采样频率

        采样频率指的是每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。由于人耳的分辨率很有限,太高的频率并不能分辨出来。
        日常生活照常用的采样率22050, CD音质的采样率是44100。

3、采样位数

        采样位数:即采样值或取样值(就是将采样样本幅度量化)即记录的是声波的振幅。它是用来衡量声音波动变化的一个参数,它的数值越大,分辨率也就越高,即声音越细腻,所发出声音的能力越强。例如8位代表2的8次方—256,16位则代表2的16次方—64K。比较一下,一段相同的音乐信息,16位采样位数能把它分为64K个精度单位进行处理,而8位采样位数只能处理256个精度单位,造成了较大的信号损失,所以前者记录了音频更多的细节。下面列一些对比:

  • 1 字节(8bit) 能记录 256 个数, 也就是只能将振幅划分成 256 个等级;
  • 2 字节(16bit) 可以细到 65536 个数, 已到达 CD 标准;
  • 4 字节(32bit) 能把振幅细分到 4294967296 个数;

4、通道数

        通道数:即声音的通道的数目。通常分为单声道和立体声,单声道的声音只能使用一个喇叭发声,而立体声可以使两个喇叭都发声更能感受到空间效果,当然还有更多的通道数。
        需要注意的是:如果是双声道, 那么采样就是双份的, 文件也差不多要大一倍.

5、帧、周期

        帧:帧记录了一个声音单元,其长度为样本长度(采样位数)和通道数的乘积
        周期:音频设备一次处理所需要的帧数,对于音频设备的数据访问以及音频数据的存储,都是以此为单位。

6、交错模式和非交错模式

        交错模式:数字音频信号存储的方式。数据以连续帧的方式存放,即首先记录帧1的左声道样本和右声道样本,再开始帧2的记录。
        非交错模式:首先记录的是一个周期内所有帧的左声道样本,再记录所有右声道样本

7、音频数据格式

7.1 音频压缩方式

        音频压缩技术指的是对原始数字音频信号流(PCM编码)运用适当的数字信号处理技术,在不损失有用信息量,或所引入损失可忽略的条件下,降低(压缩)其码率,也称为压缩编码,它有两种压缩方式,分别是有损压缩(降低音频采样频率与比特率,输出的音频文件会比原文件小)和无损压缩(无损压缩能够在100%保存原文件的所有数据的前提下,将音频文件的体积压缩的更小,而将压缩后的音频文件还原后,能够实现与源文件相同的大小、相同的码率)。例如MP3、WMA、OGG被称为有损压缩,无损压缩格式有APE、FLAC、WavPack、LPAC、WMALossless、AppleLossless、La、OptimFROG、Shorten。而常见的、主流的无损压缩格式只有APE、FLAC。

7.2 iOS支持的文件格式
Format Name Format fileName extensions
AIFF .aif, .aiff
CAF .caf
MPEG-1,layer 3 .mp3
MPEG-2, MPEG-4 ADTS .acc
MPEG-4 .m4a,.mp4
WAV .wav
AC-3(Dolby Digital) .ac3
Enhanced AC-3 (Dolby Digital plus) .ec3
7.3 音频数据格式转换

        在iOS中可以使用Audio Convert Services提供的服务来完成音频数据格式转换,可以完成下面三种类型转换。

  • 将音频格式解码为线性PCM格式。(例如AAC(高级音频编码)转成PCM)
  • 将线性PCM数据转换为其他音频格式。
  • 在线性PCM的不同变体之间进行转换(例如,将16bit带符号整数线性PCM转换为8.24bit定点线性PCM)。
7.4 音频录制格式选择

        在录制音频的时候不推荐使用AAC和MP3格式,它们耗电和消耗CPU性能。苹果推荐使用下面这个些格式。

录制音频推荐格式
Apple Lossless (ALAC, 苹果无损格式)
iLBC (internet Low Bitrate Codec,互联网低比特率编解码器)
IMA/ADPCM ( IMA-4)
Linear PCM
µLaw and aLaw
7.5 Core Audio中的音频数据的规范格式(使用下面这些规范可以是音频数据,与平台无关)
  • 在iOS中的输入和输出是使用的16bit整数的线性PCM样本
  • 在iOS中的audio units 和其他音频处理是使用8.24bit的无交错线性PCM的固定样本
  • Mac input and output Linear PCM with 32-bit floating point samples
  • Mac audio units and other audio processing Noninterleaved linear PCM with 32-bit floating point samples
7.6 音频数据的数据包

音频数据格式有三种数据包:

  • 在CBR(恒定比特率)格式(例如线性PCM和IMA / ADPCM)中,所有数据包的大小均相同
  • 在VBR(可变比特率)格式(例如AAC,Apple Lossless和MP3)中,所有数据包的帧数均相同,但每个采样值中的位数可能会有所不同
  • 在VFR(可变帧速率)格式中,数据包具有变化的帧数

8 Core Audio 介绍

         Core Audio是苹果对音频处理的框架,分为三层接口,底层我们不能够直接使用,所以接下来主要介绍,中层和高层的接口。如下图所示。


音频处理的三层接口结构
8.1 mid-level
  • Audio Converter Services:提供数据格式转换服务。
  • Audio File Services:从磁盘读、写音频数据服务。
  • Audio Unit Services 和 Audio Processing Graph Services为app提供数字信号处理(DSP)插件,例如均衡器和混频器。
  • Audio Format Services:提供音频数据格式管理服务。
8.2 high-level:
  • Audio Queue Services:可以记录,播放,暂停,循环和同步音频。它根据需要采用编解码器来处理压缩的音频格式。音频数据流对开发者可见,也就是用户可以对这个数据流操作。
  • AVAudioPlayer:用于播放和循环音频以及实现快退和快进。音频数据流对开发者不可见,也就是只能通过调用API,不能够处理数据,需要注意的是在音频播放行为,如果需求是需要立体声并且精确同步,不要使用这个播放器,Audio Queue Services更为适合,反之苹果推荐使用这个播放器。
  • Extended Audio File Services:它是对Audio File Services 和 Audio Converter services的封装,它为读写未压缩和压缩的声音文件提供了统一的接口,例如提供与线性PCM之间的自动数据转换。
  • OpenAL:它直接使用Core Audio的I/O音频单元,从而实现最低延迟回放。适用的主要场景是游戏声音。
8.3 对于iOS需要知道的音频处理框架
  • AudioToolbox.framework:为mid-level和high-level提供接口,在iOS,包含了Audio Session Services
  • AudioUnit.framework:让app可以使用音频插件,比如音频单元和编解码器。
  • AVFoundation.framework:主要提供两个类AVAudioPlayer和AVAudioEngine,前者主要处理简单的音频播放,后者是处理更为复杂的音频播放。
  • CoreAudio.framework:提供跨Core Audio使用的数据类型以及用于低级服务的接口。
  • OpenAL.framework:操作OpenAL的框架。

Audio units进一步介绍

         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 。

  • 3D混合器(3D mixer unit):允许任意数量的单声道输入,每个输入可以是8位或16位线性PCM,并且在8.24位定点PCM中提供一个立体声输出,3D混合器在其输入上执行采样率转换,并对每个输入通道提供大量控制,比如控制音量,静音,距离衰减和播放速率。可以使用kAudioUnitSubType_AU3DMixerEmbedded来设置。
  • 多通道混音器(Multichannel mixer unit):允许任意数量的单声道或立体声输入,每个输入可以是16位线性或8.24位定点PCM,并且在8.24位定点PCM中提供一个立体声输出。应用程序可以控制每个输入通道静音和取消静音,和调控音量大小。可以使用kAudioUnitSubType_MultiChannelMixer来设置。
  • 转换器(Converter unit):提供采样率,位深度和位格式(线性到定点)转换。iPhone转换器的标准数据格式为8.24位定点PCM。可以使用kAudioUnitSubType_AUConverter来设置。
  • I/O unit:提供实时音频输入和输出,并根据需要执行采样率转换。可以使用kAudioUnitSubType_RemoteIO来设置。

注:关于Core Audio的实战更新中......

参考:http://www.code06.com/other/aoshilang2249/92451.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容