IOS音频4:之采用四种方式播放音频文件(四)AudioToolbox AVFoundation OpenAL AUDIO QUEUE

3.1 任务需求分析

   在本小节主要利用openal实现对音频文件的播放。在功能上需要实现可以利用ply_music

按钮播放本地音频文件。界面上我们沿用2.1小节中所建立的工程,在-(IBAction) ply_music:

 (id)sender中注释掉利用AudioToolbox.framework框架以及利用AVFoundation.framework播放音频文件的方法,将相应的open al代码添加进去。除此之外还需要实现可以播放本地pcm音频文件,以及了解3D音频特效的实现方法。

本小节的主要目的在于:

(1)了解open al的跨平台音频处理库。

(2)掌握ios环境下利用open al播放音频文件的方法。

(3)掌握利用open al直接播发本地pcm音频类型文件的原理和方法。

(4)了解open al在3D音效技术处理上的应用。

3.2 OPEN AL概述

   在正式开始学习这一章节之前我们首先要了解什么是open al技术?以及open al技术的要点?Open al主要针对三个对象:分别是声源(source)、缓冲器(buffer)、listener(听众)。OPEN AL是一款跨平台的音效处理库。它的最大特点是根据source(声音源)以及listener(听者)之间的相对位置(三维笛卡儿坐标系下)来实现3D的音频特效。OPEN AL在风格上与OPEN GL非常类似。具有OPEN GL基础的同志们可以很快速的掌握这个音效处理库的使用。

OPENAL支持多种音效平台,如Mac OS X、iOS、GNU/Linux、Windows PC等等。因此很方便的应用在苹果设备中。

图1是OPEN AL的结构框架:


    从层次上来分,OPENAL主要包括音频播放部分以及数据缓冲部分。要想可以正常的播放音频信号,open al中需要包括一个device(音频设备)、最少一个Context、一个或者多个声源source,还要有一个或者多个缓冲buffer。对于每个context来说只能对应一个listener。其中

Device表示用于播放音频的具体音频设备。Context表示用于播放音频的上下文环境。Source代表用于存放原始音频信号的数据源。Buffer用于在播放过程中充当source数据缓存。

   下面通过最简单的步骤构造一个基于open al的音频播放器,帮组大家快速的掌握利用open al播放音频文件的方法。具体来说构件播放器的步骤分为open al初始化部分以及Open al音频播放部分。

open al初始化部分:

1、打开音频设备(device),并获取设备的id号。

2、创建该音频设备的播放环境,并对其进行匹配。

3、创建音频数据缓存空间(buffer),并获取数据缓存空间的id号。

4、创建声源数据原始空间(source),并获取声源空间id号。

Open al音频播放部分:

1、打开所需要播放的音频文件,并获取音频文件的音频格式(如音频编解码方式、量化位数等)

、音频文件大小、采样频率。

2、根据音频文件的相应参数将刚刚打开的音频文件数据源装载到buffer缓存中。

3、设置音源(source)以及听众(linstner)的具体位置。二者之间的相对位置不同,听到的声音效果也不同,例如有时你会听到声音在你的后面,有时你会听到声音在你的前面。

4、将声源(source)与缓存(buffer)关联起来。

5、利用open al api播放音频文件。

    在了解了open al初始化和音频播放流程之后,我们已经对open al的使用过程有了一个清晰的认识,但在在开始分析源代码之前还需要了解以下open al常用到的一些数据结构。

      ALuint             source;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值