python播放mp3文件 playsound_播放声音文件 函数playsound()

2023-05-16

播放声音文件

(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的简单包装而已

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 为什么从 Pandas 1.0 中删除了日期时间?

    我在 pandas 中处理大量数据分析并每天使用 pandas datetime 最近我收到警告 FutureWarning pandas datetime 类已弃用 并将在未来版本中从 pandas 中删除 改为从 datetime 模块
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 使用 kivy textinput 的 'input_type' 属性的问题

    您好 我在使用 kivy 的文本输入小部件的 input type 属性时遇到问题 问题是我制作了两个自定义文本输入 其中一个称为 StrText 其中设置了 input type text 然后是第二个文本输入 名为 NumText 其
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 如何在不丢失注释和格式的情况下更新 YAML 文件 / Python 中的 YAML 自动重构

    我想在 Python 中更新 YAML 文件值 而不丢失 Python 中的格式和注释 例如我想改造 YAML 文件 value 456 nice value to value 6 nice value 界面类似于 y yaml load
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • Jupyter Notebook 找不到 Python 模块

    不知道发生了什么 但每当我使用 ipython 氢 原子 或 jupyter 笔记本时都找不到任何已安装的模块 我知道我安装了 pandas 但笔记本说找不到 我应该补充一点 当我正常运行脚本时 python script py 它确实导入
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • Python:XML 内所有标签名称中的字符串替换(将连字符替换为下划线)

    我有一个格式不太好的 XML 标签名称内有连字符 我想用下划线替换它 以便能够与 lxml objectify 一起使用 我想替换所有标签名称 包括嵌套的子标签 示例 XML
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street

随机推荐

  • PyShark入门(1):简介

    原文地址 xff1a http zodiacg net 2016 07 in 本系列文章译自thePacketGeek的系列文章 原创翻译 xff0c 转载请注明出处 文章作者以PyShark为基础开发了Cloud Pcap xff0c 一
  • 将元素添加到List集合的第一位

    2019独角兽企业重金招聘Python工程师标准 gt gt gt list add 1 object 看一下add方法的注释 Inserts the specified element at the specified position
  • KMS激活时,常见的错误及处理

    0x80072EFE 出现这种是错误因为服务器响应超时或与服务器连接已丢失 xff0c 网络连接的问题 解决方法 xff1a 暂时关闭防火墙和杀毒软件 xff0c 将网卡禁用再启用 xff0c 确保网络是通的 0x8007232B 过 30
  • 精彩网页

    新华网美国频道 xff1a http us xinhuanet com php加密网址 xff1a https www phpjiami com 转载于 https www cnblogs com net5x p 6570727 html
  • java集合类(二)List学习

    接上篇 java集合类 xff08 一 xff09 List接口继承了Collection接口和Iterable接口 xff0c 即同样含有Collection和 Iterable的特性 xff0c 还有方法 xff0c 其基本方法有 xf
  • 构建安全的数据访问-部署注意事项(九)

    部署注意事项 以安全方式设计和开发的数据访问组件如果不以安全的方式进行部署 xff0c 仍然容易受到攻击 常见的部署做法是使数据访问代码和数据库驻留在单独的服务器上 这些服务器通常由内部防火墙隔开 xff0c 这就引进了额外的部署注意事项
  • matlab练习程序(随机直线采样)

    我只是感觉好玩 xff0c 写了这样一段程序 原理就是先随机生成两个点 xff0c 然后根据这两个点画直线 xff0c 最后在直线上的像素保留 xff0c 没在直线上的像素丢弃就行了 最后生成了一幅含有很多空洞的图像 当然 xff0c 对含
  • 跳一跳j算法ava代码_麻将游戏算法深入解析及实现代码

    麻将游戏算法深入解析及实现代码 这两天为了工具箱的完善 xff0c 整理了这些年引擎开发的一些资料 xff0c 无意中发现06年写的一个麻将算法 xff0c 编译运行了一下 xff0c 还是有点意思的 xff0c 拿出来整理一下分享给大家
  • 使用SP Racing F3飞控&ROSflight软件包的无人机自主飞行系统

    搭建四旋翼系统 机架 xff1a XR215 Plus 328 分线板 xff1a XR215 Plus PDB 飞控 xff1a SP Racing F3 标准版 xff08 Acro xff09 86 电机 xff1a 银燕RS2205
  • PostMan使用手册

    Postman 使用手册系列教程 xff1a Postman软件安装 Postman使用手册1 导入导出和发送请求查看响应 Postman使用手册2 管理收藏 Postman使用手册3 环境变量 Postman使用手册4 API test
  • python 网站文件及数据库备份脚本

    初学python xff0c 试着写了一份python网站文件备份和数据库备份的脚本 xff0c 功能是写出来了 xff0c 但感觉还是不太适应 xff0c 写得不太好 xff0c 以后还要努力哈 xff01 backup py读取back
  • 八款值得尝试的精美的 Linux 发行版(2017 版)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在这篇文章中 xff0c 将会列出让一些令 Linux 用户印象最深刻且精美的 Linux 发行版 xff0c 包括对初学者友好和流行的发行版 1 elementary O
  • 大型网站架构系列:20本技术书籍推荐

    学习是技术人员成长的基础 xff0c 本次分享20本技术方面的书籍 xff0c 这些书不是每一本都是经典 xff0c 但是每一本都有其特点 以下20本大部分本人都看过 xff0c 因此推荐给大家 xff08 本次推荐的20本只是一个参考 x
  • 正确判断无人机指向故障 让电子罗盘远离磁干扰

    电子罗盘作为无人机产品的重要组成部件 xff0c 承载着为无人机引导绝对方位的功能 对于普通设计者而言 xff0c 经常会遇到电子罗盘校正困难 xff0c 校正需求过于频繁 xff0c 动态 高速运行时突发偏离 xff0c 以及无论怎么校正
  • 测试计划驱动开发模式 TPDD:一种比 TDD 更友好的开发模式

    相信大部分开发团队都在使用TDD xff0c 并且还有很多开发团队都 对外声明 在使用 TDD 开发模式 之所以说是 对外声明 xff0c 是因为很多开发团队虽然号称使用的是 TDD 开发模式 xff0c 实际开发过程中却无法满足 TDD
  • Android Button悬浮在SurfaceView上

    实现Button悬浮于与SurfaceView之上实现 注意 xff1a 你实现的SurfaceView和android中的Button EditView是同级的 xff0c 不能把一个包含在另一个里面 1 创建自己的SurfaceView
  • 异域linux内核漏洞,Ubuntu本地提权攻击漏洞复现(CVE-2017-16995)

    Ubuntu 16 04 4 kernel priv esc all credits to 64 bleidl vnik Tested on 4 4 0 116 generic 140 Ubuntu SMP Mon Feb 12 21 23
  • ROS 自定义消息类型

    引言 学习ROS的过程中 xff0c 在话题的发布与订阅之间 xff0c 我一直在思考 xff0c 我们能不能定义自己的话题名 xff0c 甚至在编写我们自己的ROS软件包时 xff0c 定义我们自己的消息类型 首先能不能定义自己的话题名
  • 计算机方便了我的工作作文,电脑给我们的生活带来了方便作文2篇

    电脑给我们的生活带来了方便作文2篇 在生活 工作和学习中 xff0c 大家都尝试过写作文吧 xff0c 借助作文人们可以反映客观事物 表达思想感情 传递知识信息 那么你有了解过作文吗 xff1f 下面是小编为大家收集的电脑给我们的生活带来了
  • python播放mp3文件 playsound_播放声音文件 函数playsound()

    播放声音文件 1 用途 xff1a 游戏里播放音乐 xff1b 自己动手给女友做音乐贺卡 图片 滚动的字母 温馨的音乐 2 可以使用PlaySound 函数播放声音文件 xff0c 该函数原型位于 include 中 因此要使用PlaySo