brew-应用中音频播放

brew-应用中音频播放

ID:20538646

大小:26.00 KB

页数:4页

时间:2018-10-13

brew-应用中音频播放_第1页
brew-应用中音频播放_第2页
brew-应用中音频播放_第3页
brew-应用中音频播放_第4页
资源描述:

《brew-应用中音频播放》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、BREW-应用中的音频播放BREW应用中的音频播放BREW应用中的音频播放BREW中支持的音频格式主要分为两类:基于MIDI的文件格式和特殊编码的音频文件格式。基于MIDI的文件格式有.mid,.dls..xmf和.pmd,其中的DLS文件是由设备定义的,自身是不能被播放的,XMF文件将MIDI和DLS结合起来进行播放。PMD文件与XMF类似是一种文件容器,可以包含MIDI,DLS和其他编码格式的音频,还可以包含图像,文本,LED或者振动同步信息等。编码的音频格式主要有QCELP,PCM和ADPCM三种,Q

2、CELP一个语音压缩的编译码器,并不适合音乐的播放。PCM是一种16bit未压缩的波形抽样原始数据,非常适合播放音乐,但文件的尺寸非常大。ADPCM只有四分之一的PCM的文件大小,比较适合手机上的音乐和声音效果。就采样率而言,QCELP只是8kHz的采样率,而PCM支持4,8,11.025,12,16,22.05,24,32,44.1kHz的采用率,ADPCM支持从4.0到44.1kHz的任何采用率。以播放QCP文件为例,播放一个音频文件非常简单,首先创建AEECLSID_MEDIAQCP的IMedia接口

3、,然后调用IMEDIA_SetMediaData()加载音频文件,最后调用IMEDIA_Play()播放即可。在循环播放的时候,在文件播放结束和文件重新播放之间通常会存在短暂的空白,BREW3.1.5及以后的版本支持QCP,PCM和ADPCM的无间隙播放。例如,在加载QCP文件之前先调用IMEDIA_SetMediaParm(pIMediaQCPObject,MM_PARM_PLAY_REPEAT,repeatCount,0)和IMEDIA_EnableChannelShare(),然后在调用IMEDIA_

4、Play()就可以实现QCP音频效果的无间隔循环播放。在某些情况下,需要实现混合的音频效果。在BREW2.1及以后的版本中,实现了4个MIDI文件的混合,4QCP文件的混合或者4个ADPCM文件的混合。需要注意的是,混合的文件必须为相同的文件格式,例如全部的QCP文件或者全部的ADPCM文件,而不能将QCP文件与PCM或者ADPCM文件进行混频,只有在07年以后(在中国市场)的部分手机才开始支持不同音频格式文件的混合播放。音频混合播放的过程与无间隙循环播放的过程类似,首先创建接口,然后通过IMEDIA_Se

5、tMediaData()来加载每一个音频文件,并且在创建媒体对象后立即调用IMEDIA_EnableChannelShare(),最后就能够使用IMEDIA_Play()来进行混音播放了。3.1.4以前的版本IMEDIA_EnableChannelShare()可能会有问题。另外,使用AEECLSID_MEDIAMIDIOUTQCP创建的接口可以兼顾QCP或者ADPCM文件。实现混音播放的另一种简单方法就是将所需的各种音频文件嵌入到一个CMX的文件中,然后只播放这个CMX文件就可以了。这种方法的局限在于需要

6、手机对CMX的支持。可下载的音频(DLS)实际上是一种面向MIDI合成器的定制化波形表,可以通过MIDI指令来完成播放或停止,定调和音量调整等操作。在CMX4.4及其以后版本中,这种可下载的音频也可以嵌入到.pmd或者.xmf文件中。在SDK3.1.4之后的版本中,可以通过IDLSAPI来加载或卸载这种可下载的音频。表14-2介绍了DLS的音效类型及适用的情形。类型描述示例DLS优势单次音效在最大的采样周期长度内播放音效开枪的声音t开关门的声音音准的确定可以通过按上下键来实现循环音效一个连续声音效果的循环播

7、放骏马奔驰的声音,溪水潺潺的声音音准可变,可以保持在文件中片段音效将较短的音效循环播放,或者合成为新的音效物品肢解的声音,机械引擎的声音音准可变,可以保持在文件中,能够通过基本的音效产生较为复杂的音效表14-2:DLS的音效类型及适用的情形使用IDLS的时候,首先要创建DLS的对象:ISHELL_CreateInstance(m_pIShell,AEECLSID_MEDIADLS,(void**)&m_pIDLS);接下来设定DLS文件的媒体数据属性:AEEMediaDataMediaData;MediaD

8、ata.clsData=MMD_FILE_NAME;MediaData.pData=DLS_FILE;MediaData.dwSize=0;然后初始化DLS的回调函数,并加载DLS文件CALLBACK_Init(&m_cbDLSLoad,LoadDLSCB,(void*)this);iReturn=IDLS_Load(m_pIDLS,&MediaData,&m_cbDLSLoad,&m_LoadDLSRet);如

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。