ALuintsource;
ALuintbuffer;
ALCcontext*context;
ALCdevice*device;
Source存放原始数据的内容,buffer存放数据缓存内容。Context描述了上下文信息,device获取设备的id号。
通过alGenBuffers函数(c语言中)可以调用open al中用到的相关参数
AL_FREQUENCY:表示缓冲器的频率参数,单位是赫兹。
AL_BITS:表示缓冲器的量化位数。
AL_CHANIVELS:表示缓冲器的音频通道个数,可以为1或者2。
AL_SIZE:表示缓冲器的大小。单位是字节。
AL_DATA:表示缓冲器的数据地址。描述了数据源的起始位置。
设置alGenSource可以调用很多声源参数:
AL_POSITION:设置声源的X、Y、Z三个方向上的坐标。
AL_MIN_GAIN:设置声源的最小增益。
AL_VELOCITY:设置声源的速度失量。
……

当然还有很多其他的速度失量信息,这里由于篇幅关系就不一一介绍。
Open al虽然是第三方提供的音频处理库,但在ios中已经通过openal framework添加进来。当然在使用open al中相应函数的时候需要将open al的相应文件添加到工程中。
3.3源程序分析
首先先来看一段利用openal播放本地音频文件的源程序:
1 device =
alcOpenDevice(NULL);
2 context =
alcCreateContext(device,
0);
3 alcMakeContextCurrent(context);
4 alGenBuffers(1, &buffer);
5 alGenSources(1, &source);
6 ALenum source_format;
7ALsizei source_size;
8ALsizei source_freq;
9 NSString *ply_music = [[NSBundlemainBundle]
pathForResource:@"music"
ofType:@"wav"];
10 NSURL *musicURL = [NSURLfileURLWithPath:ply_music];
11 CFURLRef music_URL = (__bridgeCFURLRef)musicURL;
12 source_data =MyGetOpenALAudioData(music_URL, &source_size,&source_format, &source_freq);
13 alBufferDataStaticProc(buffer, source_format,source_data, source_size, source_freq);
14 alSourcei(source,AL_BUFFER,
buffer);
// alSourcefv
根据所要产生的音频3D效果设置声源位置。。。。。
15 alSourcePlay(source);
该段源代码位于ViewController.m文件ply_music方法中。在原工程的基础上注释掉利用Foundation.framework框架播放音频文件的代码。将此段代码添加进来。就可以实现对本地音频文件的播放。
程序第一行通过alcOpenDevice打开所需要播放的音频文件设备。如果打开正确则返回音频设备的id号device。第二行建立播放音频文件的上下文运行环境。将音频设备的id号作为参数输入。第三行匹配音频设备播放音频文件的上下文环境。运行此语句会有以下参数输出:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28346-2.html
但你怎么会知道
我的9