先了解一下brew中可以播放音频的API(以下内容来自API帮助文档)
ISOUND:可以提供基本的声音服务。这些服务可以产生蜂鸣、铃声、振动、各种音调和音调列表。只能播放音调。
IRingerMgr:播放铃声。
ISoundPlayer:只能播放音乐文件。现在已不推荐使用。
IMEDIA:可以支持pmd格式的文件,声音,文本,图象都可以。
本例子中,使用IMEDIA接口,播放一首mp3格式的音乐。
1.创建工程app及其同名mif文件;
//创建工程的第一步中选File、Sound
//在mif文件的权限里勾选“文件”
//把要播放的mp3音乐放在本工程的文件夹下,音乐名是英文,不含非法字符
2.在文件开始,添加AEEMedia.h
//这样才可以使用IMEDIA接口及其函数
//部分音乐格式需要AEEMediaFormats.h的支持
3.在结构体定义中添加AEEMediaData变量、IMedia指针;
4.在app_HandleEvent中的EVT_APP_START下添加功能入口函数start;
//功能入口函数就是要播放音乐的函数
5.在app_InitAppData中用ISHELL_CreateInstance创建IMedia实例
//中间的参数由要播放的音乐格式确定,以下是常用的对应关系
//midi——AEECLSID_MEDIAMIDI
//mp3——AEECLSID_MEDIAMP3
//qcp——AEECLSID_MEDIAQCP
//pmd——AEECLSID_MEDIAPMD
//mpg4——AEECLSID_MEDIAMPEG4
//mmf——AEECLSID_MEDIAMMF
//phrase——AEECLSID_MEDIAPAPHR
6.在start中初始化AEEMediaData变量
//clsData = MMD_FILE_NAME;以下指定的是文件名
//pData = "music.mp3";mp3的文件名
//dwSize = 0;在指定文件名时,这个参数是没有意义的
7.用IMEDIA_SetMediaData把要播放的文件放进去;
//第二个参数前要带&
8.IMEDIA_Play播放
到这一步,应该可以听到音乐了。
IMEDIA_Play是异步执行的,在调试中,我们发现,它返回SUCCESS时不一定有声音。那么,它是在什么情况下返回SUCCESS的呢?好像是:它检查硬件是否支持播放这种格式的音乐,如果支持,就立刻返回SUCCESS。至于什么时候播放,播放结束后返回什么,到现在我还没弄明白。
以上步骤实现了:一个音乐,播放一次,然后停止。
当然,在实际应用中不会如此简单。满足复杂的需求,要用到回调函数,假设创建回调函数为app_notify。回调函数要按照IMedia.h中的格式写,在IMEDIA_Play之前用IMEDIA_RegisterNotify注册回调函数。
1.一个音乐,播放n遍。比如说游戏的背景音乐,需要一直播的。
解决:在app_notify中调用IMEDIA_Play,这段音乐会循环播放不停止。
2.多个音乐的播放。比如游戏中的提示声音。
解决:app_notify中,判断AEEMediaCmdNotify,在MM_STATUS_DONE状态下,用IMEDIA_Stop停止当前音乐(可有可无,其实是释放一些资源,置为ready状态),释放当前IMedia实例。再用ISHELL_SetTimer启动一个回调(如果把ISHELL_CreateInstance放到start中,这个回调就是start),在回调里重新创建IMedia实例,执行步骤6、7、8。
3.音乐的定时播放。比如需要音乐之间有停顿。
通过设置app_notify中的ISHELL_SetTimer。它必须存在,如果不需要音乐之间有停顿,把值设得小一些。从我们的测试结果看,太小也不行。500ms几乎是听不出来有停顿。
4.多个音乐的存储。
用一个数组存放音乐文件的名字即可。
分享到:
相关推荐
web amr 音频 播放 插件
音频模块支持音频业务的开发,提供音频相关的功能,主要包括音频播放、音频采集、音量管理和短音播放等。 1、音频播放的主要工作是将音频数据转码为可听见的音频模拟信号并通过输出设备进行播放,同时对播放任务进行...
联想工程师专用小工具 Windows音频播放问题修复工具V1.51.1联想工程师专用小工具 Windows音频播放问题修复工具V1.51.1联想工程师专用小工具 Windows音频播放问题修复工具V1.51.1联想工程师专用小工具 Windows音频...
微信小程序开发之录音机 音频播放 动画 (真机可用)(源代码+截图)微信小程序开发之录音机 音频播放 动画 (真机可用)(源代码+截图)微信小程序开发之录音机 音频播放 动画 (真机可用)(源代码+截图)微信小程序开发之录音...
音频的暂停、播放 音频支持进度条拖动播放 音频组件中有两个参数start、end时间参数(单位毫秒),用于在进度条上标记 音频实时播放时间显示、进度条显示
c#实现音频播放,可以调节音量,可以停止播放,用vs2010打开
用Java实现音频播放
利用audioAPI即兴做的自定义音频播放器小界面,必然有很多不足,望指出(界面难看除外)
居于linux的音频播放和停止,可以作为项目使用
一个Android平台的音频播放源码(国外)
Android 音频流播放 VLC 播放器
如果实现一个音频文件的播放,那么在应用程序中提供播放音频文件功能的最简单的方式是利用内置的“Music(音乐)”应用程序的功能--即使用系统自带的或已安装好的音乐播放器来播放指定的音频文件。
c# 音频播放 Demo,可播放wav、mp3、wma等格式的音乐。请多多指教!
通过本工程的代码初学者可以快速学习使用这几个API播放视频和音频的技术。 一共包括了如下几个子工程: simplest_audio_play_directsound: 使用DirectSound播放PCM音频采样数据。 simplest_audio_play_sdl2: ...
基于android平台的音频播放自定义控件,使用简单易操作
如果要对音频文件播放,需要先转换为pcm格式。 windows提供了多套函数用于播放,本文介绍Waveform Audio Functions系列函数。 原始的播放函数比较难用,因工作需要,我写了一个播放器,将播放相关函数封装了;非常...
易语言libzplay音频播放模块源码例程程序调用libzplay.dll实现音频播放。 libzplay.dll是所有支持格式(mp3, mp2, mp1, ogg, flac, ac3, aac, oga, wav and pcm )的编码解码器。
ndk中的一个音频例子,是个很好的学习代码,在android底层用c实现的音频录制与播放
程序对音频文件的播放,暂停,停止等功能,调用控件MMcontrol,即多媒体控件,程序简单,界面简洁
ffmpeg提取音频播放/解码介绍../.........................