播放声音文件

(1)用途:游戏里播放音乐;自己动手给女友做音乐贺卡(图片、滚动的字母、温馨的音乐)

(2)可以使用PlaySound()函数播放声音文件,该函数原型位于#include

中,因此要使用PlaySound,首先需要添加对这个头文件的引用。

提示:mm就是MultiMedia的简写,多媒体

(3)函数原型为:BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);

返回值表示是否播放成功。

参数pszSound是要播放声音的文件名,只支持WAV等格式的文件;去mp3.baidu.com用“wav”为关键词可以搜到很多wav音乐,也可以用工具将其他格式的转换为wav格式的。

参数hmod是应用程序的实例句柄,一般传递NULL就可以;

参数fdwSound是标志的组合掩码,可选值有SND_FILENAME、SND_ASYNC、SND_SYNC等。SND_FILENAME表示pszSound参数指定的是文件名(pszSound还可以指定资源、内存音乐、系统音乐等等);SND_ASYNC:用异步方式播放声音,PlaySound函数在开始播放后立即返回;SND_SYNC:同步播放声音,在播放完后PlaySound函数才返回;SND_LOOP一遍遍的重复播放声音,必须与SND_ASYNC标志一块使用。

(4)使用举例:

PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP启动.wav"),NULL,SND_FILENAME|SND_SYNC);

注意的问题:文件名中的反斜线要用“\\”,因为C语言中“\”默认是转义符,如果要表示“\”则需要使用“\\”,对这点不明白的请回去翻一下C语言的书;对中文字符串要使用TEXT宏。

(5)为啥构建不通过?

#include 只是保证编译通过,还要设定link。

解决方案:工程上点击右键,选“工程设置”,连接,添加“winmm”库。

解决此问题时参考的文章:http://hi.baidu.com/big_foot/blog/item/4822fcd11a7f7cd6562c84e7.html。它虽然描述的是VC中解决此问题的方式,但是记住“一通百通”这个道理,C-Free中添加Link库的方式和VC非常相似,只是操作步骤不同而已。

附录:VC中添加Link库的方式:

project->setting->Link下的Object/library modules里加入winmm.lib即可”,他这里用的是英文版,中文版应该是主菜单的【工程】→【设置】→【连接】,将“winmm.lib”加入到“对象/库模块”中。

(6)接上面的问题:关于link库

一个程序由源代码变成exe文件有两步:编译Compile;连接Link。编译是把c文件编译成.o、.obj文件,而连接则是把这些.o、.obj、.lib等文件连接到一起成为exe文件。这点不清楚的请回去查看C语言的教材。

那什么是*.lib文件呢?大家以前用TC开发程序的时候用的都是C语言内置的函数,所以不存在使用非内置函数的情况。但是在开发大程序的时候要大量用到非内置的函数,比如PlaySound、MessageBox等等。在使用这些函数的时候需要使用两部分,一部分是*.h头文件,它定义了函数的参数和返回值,另一部分是*.lib文件,是用来进行程序链接用的。C程序的构建分为编译(Compile)和连接(Link)两个过程,Compile是把源代码编译成*.obj文件,每个源码文件都对应一个*.obj文件,而连接则是把这些*.obj文件以及使用到的非内置函数的*.lib文件连接成一个*.exe文件。所以无论是忘了include *.h文件,还是丢了*.lib文件,都会构建出错。从上面的报错信息可以看出来是Compile成功,但是Link失败。一定要记得C程序编译的这两个过程,面试、笔试的时候常考。

(7)同步播放音乐

PlaySound("C:\\WINDOWS\\Media\\Windows XP关机.wav",NULL,SND_FILENAME|SND_SYNC);

(8)体会同步播放和异步播放的差异:

PlaySound("C:\\WINDOWS\\Media\\Windows XP关机.wav",NULL,SND_FILENAME|SND_SYNC);

MessageBox(NULL,"同步播放完毕","信息",MB_OK);

PlaySound("C:\\WINDOWS\\Media\\Windows XP关机.wav",NULL,SND_FILENAME|SND_ASYNC);

MessageBox(NULL,"异步播放立即返回","信息",MB_OK);

同步模式:音乐播放过程中函数不返回,播放完成才返回

异步播放在做游戏等需要播放时间较长的音乐时使用,因为程序不会在音乐播放过程中有假死的情况。

有没有同学注意到第二个对话框如果快速关闭的话音乐会中途停止?这是因为程序退出音乐就中断播放了。用户关了游戏,音乐也不能继续播放,应该停止,所以很合理

(9)我可以做一个小程序,别人在我小程序运行的时候一直听播放的音乐,用异步方式可以保证音乐在后台播放。可以只能播放一遍,能不能音乐来回来去的不断播放呢?答案是使用SND_LOOP标志。

Loop:循环

PlaySound("C:\\WINDOWS\\Media\\Windows XP关机.wav",

NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);

(10)如果我做一个小游戏,那么希望向上边那样不断播放,可以到达一个关卡的时候希望停止原来的音乐怎么办?

PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP启动.wav"),NULL,SND_FILENAME|SND_ASYNC);

MessageBox(NULL,TEXT(""),TEXT(""),MB_OK);

PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP关机.wav"),NULL,SND_FILENAME|SND_ASYNC);

MessageBox(NULL,TEXT(""),TEXT(""),MB_OK);

只能同时播放一段音乐,启动新的、旧的就被停了

(11)如果只是想停止目前的播放而不播放新音乐呢?

只要给PlaySound的第一参数传递NULL就可以停止目前的播放了。

PlaySound("C:\\WINDOWS\\Media\\Windows XP关机.wav",

NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);

MessageBox(NULL,"点确定终止音乐","信息",MB_OK);

PlaySound(NULL,NULL,SND_FILENAME);

MessageBox(NULL,"音乐被终止","信息",MB_OK);

(12)关于PlaySound函数更多的介绍见:http://zhidao.baidu.com/question/41366091.html

9、关于API

(1)什么叫API(应用程序接口Application Interface的简称)?什么叫Win32

API?API就是操作系统提供的一堆库函数,没啥稀奇的。printf、scanf是C语言内置的函数,其他的非内置的库函数都叫API。

(2)我想找实现某个功能的API怎么办?以“关闭显示器”为例讲解自学过程。

(3)怎么我查看MessageBox函数其实是MessageBoxW、MessageBoxA两个函数的宏定义?Win32API中还有大量这种风格的函数。W结尾的是把字符当成Unicode处理的,A结尾的是把字符当成ASCII处理的。使用时不要直接调用W结尾的或者A结尾的。编译器会在编译时确定调用哪个。

(4)Win32API是语言无关的,这点是非常重要的。Win32API是操作系统提供的库函数,可以在C语言中调用,也可以在C++中调用,还可以在C#、Java、Delphi、Python、汇编等各种语言中调用,因此学会了我们这里的C语言Windows程序开发以后只要熟悉一下其他语言的语法就可以很快的用其他语言开发Windows程序,VC、C#、Delphi等语言中的程序界面、网络操作、文件操作等功能都是对Win32API的简单包装而已

python播放mp3文件 playsound_播放声音文件 函数playsound()相关推荐

  1. Python播放MP3音频文件

    Python播放MP3音频文件(转载) 按推荐顺序排列 ①使用playsound库 from playsound import playsoundplaysound('xx.mp3') ②使用pyga ...

  2. python程序执行提示音——python播放MP3文件

    python程序执行提示音设置 # !pip install playsound from playsound import playsoundif __name__ == "__main_ ...

  3. 使用python播放mp3音频文件

    1. pygame 安装 pip3 install pygame sudo apt-get install libsdl2-mixer-2.0-0 libsdl2-image-2.0-0 libsdl ...

  4. python播放mp3文件

    pip install mp3play # encoding:utf-8 import mp3play import time#num:播放时间,秒 #播放mp3 def playMp3(num):c ...

  5. 【代码】Python播放MP3音频文件

    按推荐顺序排列 ①使用playsound库 from playsound import playsoundplaysound('xx.mp3') ②使用pygame库 from pygame impo ...

  6. 在XNA 3.0 项目添加声音——播放MP3或WMA声音文件

    问题 你想在XNA游戏中播放一个MP3或WMA声音文件. 解决方案 XNA可以使用默认内容管道将MP3或WMA声音文件加载到一个Song对象中,加载之后,就可以使用静态的MediaPlayer类播放S ...

  7. python 播放mp3模块_Python基于pygame模块播放MP3的方法示例

    1 IDLE1 1 IDLE是python创初人Guido van Rossum使用python and Tkinter来创建的一个集成开发环境.要使用I 2018-04-14 为什么使用Python ...

  8. 【代码+实例】Python播放MP3音频作为背景音乐

    ​   来源:百度动图   还记得之前发表的3D星空图吗?一直想给喜欢的星空图加上背景图片和音乐.   经过研究终于实现啦!戳 Python画好看的星空图(唯美的背景)   本文就教大家怎么在Pyth ...

  9. 使用Python播放mp3格式音频

    环境 Pycharm,Python3.x,pydub库(带介绍),ffmpeg(带介绍),simpleaudio库(带介绍) 探索之路(可略过) 一开始选的是用PyAudio,安装还要借用wheel, ...

  10. 关于JMF不能播放MP3的问题解决方法

    关于JMF不能播放MP3的问题解决方法 JMF官方下载地址 问题来源 其他人的解决办法 一种可行的解决办法 用JLayer播放MP3 下载地址 示例 JMF官方下载地址 JMF下载地址:JMF 2.1 ...

最新文章

  1. KVM虚拟化实践(一)
  2. 获取标签的src属性兼容性
  3. Ubuntu下配置JAVA环境
  4. ArcGIS几种数据格式2
  5. win7 打开“计算机”慢,win7电脑启动慢解决方法
  6. 连接mysql的机制_安装成功后mysql 8.0不能连接navicat的解决方法
  7. 如何用ABAP代码的方式弹出SPRO里的customizing activity
  8. php sql 长字符串 查找被包含的短字符串_PHP字符串
  9. 爱数助力国资委实现混合IT环境下的业务保护
  10. [leetcode双周赛]5312. 大小为 K 且平均值大于等于阈值的子数组数目
  11. OSGI.NET,请求因HTTP状态404 失败:Not Found
  12. sony android电视软件,Sony TV Remote app
  13. tomcat 启动编码设置(UTF-8,乱码)
  14. 佳能lbp611cn硒鼓_佳能lbp611cn说明书
  15. python二元一次方程组用鸡兔同笼的思路来写编程_《应用二元一次方程组——鸡兔同笼》...
  16. 猿创征文|三维重建领域的开发者工具箱
  17. 看懂卡尔曼滤波1 g-h滤波
  18. 网址大全(hao123和2345)
  19. spring中pom变黑 中间有一条黑线,不能用,怎么解决
  20. SpringCloud Alibaba Sentinel实现熔断与断流

热门文章

  1. 阿里云服务器搭建 图文详细教程
  2. 大学计算机Excel考试内容,大学计算机考试—Excel(操作题供参考,不附练习文件)...
  3. 08CMS之新建独立页面
  4. css3D制作旋转魔方
  5. 分布式事务解决方案FESCAR
  6. 【SAP消息号F5053】
  7. 单片机音频谱曲软件_单片机谱曲软件怎么弄 51单片机蜂鸣器电子琴程序
  8. 软件质量因素 6个_影响软件质量管理的主要因素
  9. 文件下载直接在浏览器显示内容
  10. mysql jemalloc_安装 jemalloc for mysql