- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC下音频文件的播放
杨晨
引子
首先说明一点,我学得不好,感觉没能较好的完成党交给的重任,呵呵。
我这几天一直没有看关于播放声音的东东。因为一方面感觉似乎单从我们要完成的五子,炸弹程序来看,我们现在已有的知识应该已经够用了。另一方面,在VC下播放音频是一项很大很杂的东西,我自己不想在这上面花费过多的时间。再有就是我这个文章(应该叫随笔,我想到哪写到哪,没有条理见谅)早写一天晚写一天对大家没有影响,毕竟这个东东相对于我们的程序是独立的。
恩,由于我看的东西也挺杂的,手边也没有比较权威的资料,看了一些msdn上的东东,限于英语水平有限,只是自己理解了一些,还不知对不对,所以很多东西我不能乱言,因为这样可能会对你有所误导。下面说的大多参照网上或有些书上一些强人的观点,当然也有很多我自己的语言,g你要看着些地方不爽可以不屑于顾。
OK,开始了。
Visual C++对多媒体的支持
对于一般的应用程序来说,Visual C++ 可以说是包罗万象,然而令人遗憾的是,几乎没有听说过Visual C++ 对多媒体提供过什么支持,甚至有人说Visual C++不适合多媒体编程。若是我们完全使用Visual C++的类库而不想点花招的话,恐怕连最一个简单的RPG游戏都编不出来。对于一个需要大量动画、声音的多媒体应用程序来说,Visual C++ 最多提供了一个外壳,而编制一个优秀的声音、动画引擎的任务,就落到了程序员的身上。
上面的话不是我说的,我接着说一句:那么,如何开发这个引擎,这个重任有可能以后就落的你的头上了。需要你针对你的应用程序去组织类.
大的不太好,小的应用程序应该完全凑合。
Windows的多媒体服务功能
Windows 提供了丰富的多媒体服务功能,包括大量从低级到高级的多媒体API函数。利用这些功能强大的API,用户可以在不同层次上编写多媒体应用程序.这里简要地介绍一些最常用的多媒体服务。
1,高级音频函数.
MessageBeep、PlaySound和sndPlaySound。这三个函数你应该熟悉,我不想在这说太多。因为我感觉很简单的,你查一下msdn就会了。要注意一下他们需要什么样的头文件,参数都是做什么用,还有限于什么样的文件格式。比如它们都不能播放大于100k的波形声音文件.
写个例子你应该清晰一些:
PlaySound(关机.wav, NULL, SND_ASYNC|SND_LOOP);
//第一个参数是声音文件名,最后的那个SND_LOOP是循环播放的意思。
我感觉要实现同时播放两个音乐好似只用这几个函数是不可能实现的。不管你用不用线程控制,用了一次那么它就把那个设备的接口给占住了,用第二次要么把那个接口给抢走了第一次的不能用了,要么抢不走,苦苦等你不想用了再拾过来。
2.MCI
什么是MCI?
MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。但是古人云:成也萧何,败也萧何。MCI虽然看上去高大全,但对于一些高级应用来说,它是远远不够的。
上面的话也不是我说的,但低级中级应用是完全凑合的。
MCI向Windows程序提供了在高层次上控制媒体设备接口的能力。程序不必关心具体设备,就可以对激光唱机(CD)、视盘机、波形音频设备、视频播放设备和MIDI设备等媒体设备进行控制。对于程序员来说,可以把MCI理解为设备面板上的一排按键,通过选择不同的按键(发送不同的MCI命令)可以让设备完成各种功能,而不必关心设备内部实现。比如,对于play,视盘机和CD机有不同的反应(一个是播放视频,一个播放音频),而对用户来说却只需要按同一按钮。
MCI的使用方法
应用程序通过向MCI发送命令来控制媒体设备。MCI命令接口分命令字符串和命令消息两种,两者具有相同的功能。命令字符串具有使用简单的特点,但是它的执行效率不如命令消息。(mciSendString,字符串消息。 mciSendCommand,命令消息)
1.先说mciSendString.
表面上就是发送字符串的意思,就是要告诉某些设备,请你播放!,注意下面参数的第一个都是用双引号弄起来的,只是引号里写的有固定的格式罢了。
先写个简单的例子,使你不至于一头雾水。
mciSendString(open 老鼠爱大米.avi type 设备1 ,…);
mciSendString(play 设备1 repeat,…);
上面这个例子是我胡乱写的,你应该一下子有些感觉到头上是蓝天了吧,大约看得懂什么意思吧,那repeat什么意思啊知道吧。就是说你特别喜欢那首歌,听完一次还要听。
您可能关注的文档
- Oracle系统中用户权限赋予.docx
- 电商:平台及自营的区别.docx
- 水仙常见病虫害和防治.doc
- 1970年代饥饿(日报,2014.5.4).doc
- 可灭菌及非最终灭菌分类指导原则.doc
- 账务处理程序制度摘要.doc
- 软件测试流程规划的知识.doc
- 软件需求说明书(GB856T——88)的知识.doc
- 关于物流供应链管理方法学术论文.doc
- VF中SQL语句大全.docx
- 六年级数学下册教学课件《解比例》.pptx
- 8.21.5 鸟类的生殖与发育(课件)八年级生物下册课件(苏教版).pptx
- 钠离子电池项目智能制造方案(范文参考).docx
- 2023-2024学年吉林省吉林市舒兰市七年级(上)期末语文试卷.docx
- 2024年吉林省吉林市丰满区亚桥实验学校中考数学三模试卷.docx
- 2023-2024学年吉林省辽源市东辽县七年级(上)期末英语试卷.docx
- 2023-2024学年吉林四平九年级数学第一学期期末水平检测试卷.docx
- 2023-2024学年吉林市蛟河市三校联考九年级(上)期末英语试卷.docx
- 2023-2024学年吉林松原九年级英语上册考场实战试卷.docx
- 电解液新材料项目智能制造方案.docx
文档评论(0)