先了解一下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.多个音乐的存储。
用一个数组存放音乐文件的名字即可。
分享到:
相关推荐
首先,我们来看标题"播放音频.rar",这表明我们要讨论的是一个关于音频播放的项目,可能包含一个使用MCI功能的C++代码实例。这个项目可能是一个压缩文件,解压后会有相关的源代码、编译脚本或其他支持文件。 描述中...
HTML5自定义音频播放界面是现代网页开发中的一个重要特性,它允许开发者摆脱浏览器默认的音频播放控件,创建个性化的音频播放体验。在本项目中,开发者利用HTML5的Audio API构建了一个自定义的音频播放器小界面。...
在现代的Web开发中,音频内容的处理是一个重要...总的来说,AMR音频播放插件是Web开发中的一个重要工具,它扩展了浏览器的音频播放能力,使得开发者可以轻松地在网页中集成AMR音频内容,为用户提供更丰富的多媒体体验。
4. **参考文档**:Windows官方支持网站提供了大量关于音频播放疑难解答的文档和教程,可以作为参考。 #### 四、结语 Windows音频播放疑难解答工具是一个非常实用的功能,能够帮助用户快速解决音频播放方面的问题。...
在Linux操作系统中,音频播放和停止是通过一系列的命令行工具和库来实现的。本文将深入探讨如何在Linux环境下进行音频播放与控制,以及如何将这些技术应用于实际项目。 一、音频播放基础 在Linux中,有多种音频...
在IT领域,音频播放程序是常见的应用之一,用于处理和播放音频文件。在这个"简单的音频播放程序"中,我们主要关注的是如何利用编程语言实现音频的播放、暂停和停止功能,以及涉及到的多媒体控件MMcontrol。这个程序...
【标题】"外国开源音频播放源码"涉及的是在Android平台上开发音频播放应用的技术,主要集中在源码层面,这通常意味着开发者有机会深入了解音频播放器的工作原理,并可以根据需求进行定制和改进。开源意味着代码是...
在Java编程环境中,实现音频播放是一项常见的任务,尤其在开发多媒体应用或游戏时。Java提供了丰富的API来处理音频,使得开发者能够轻松地集成音频播放功能。本篇文章将深入探讨如何用Java实现音频播放,主要涉及...
在C#编程环境中,开发音频播放功能是一项常见的需求,尤其对于多媒体应用或者游戏开发来说更是必不可少。本Demo主要展示了如何在C#中实现对不同音频格式(如wav、mp3、wma)的支持,帮助开发者了解和掌握相关技术。...
在Android平台上,开发一款应用程序,特别是涉及到多媒体功能时,音频播放控件是不可或缺的一部分。本文将深入探讨如何创建一个基于Android的自定义音频播放控件,以实现更灵活、更个性化的音频播放体验。 首先,...
音频模块支持音频业务的开发,提供音频相关的功能,主要包括音频播放、音频采集、音量管理和短音播放等。 1、音频播放的主要工作是将音频数据转码为可听见的音频模拟信号并通过输出设备进行播放,同时对播放任务进行...
java实现音频文件播放功能 本文主要介绍了java实现音频文件播放功能,该功能具有参考价值,对感兴趣的小伙伴们具有重要的参考意义。 一、获取音频文件地址 在播放音频文件之前,首先需要获取音频文件的地址。通过...
在iOS开发中,音频播放是常见且重要的功能,尤其在网络音频和语音合成方面。这个"iOS音频播放测试包"提供了一个完整的解决方案,涵盖了从网络音频流的获取到本地音频的播放,以及集成讯飞语音合成技术。以下是这些...
在本文中,我们将深入探讨如何使用Bass库来实现音频播放功能。Bass库是一个强大的音频处理库,广泛应用于各种音频应用开发中,包括音乐播放、录音、格式转换以及元数据编辑等。作为"界斗士"的博客系列,本文将专注于...
在Java编程语言中,处理音频播放是一项常见的任务,特别是在开发多媒体应用、游戏或者教育软件时。本篇文章将深入探讨如何在Java中实现音频播放功能,主要基于提供的标题"java音频播放"以及描述中的共享精神。 Java...
通过这个示例,开发者不仅可以学习如何在Android中使用JNI进行音频播放,还可以了解Android音频系统的底层工作原理,这对于开发高质量的音乐应用或游戏至关重要。同时,它也是一个实践NDK编程、提高跨平台能力的良好...
微信小程序开发之录音机 音频播放 动画 (真机可用)(源代码+截图)微信小程序开发之录音机 音频播放 动画 (真机可用)(源代码+截图)微信小程序开发之录音机 音频播放 动画 (真机可用)(源代码+截图)微信小程序开发之录音...
嵌入式Nios音频播放程序是一个专为Nios II处理器设计的系统,用于在嵌入式设备上实现音频播放功能。Nios II是Altera公司(现被Intel收购)开发的一种软核处理器,广泛应用于FPGA(现场可编程门阵列)设计中,提供了...
联想工程师专用小工具 Windows音频播放问题修复工具V1.51.1联想工程师专用小工具 Windows音频播放问题修复工具V1.51.1联想工程师专用小工具 Windows音频播放问题修复工具V1.51.1联想工程师专用小工具 Windows音频...
在Android开发中,有时我们需要实现同时播放多个音频的效果,例如在游戏场景中或者音乐应用的混音功能。...学习和理解这个示例,将有助于你在实际开发中更好地利用 `SoundPool` 实现多音频播放的功能。