python播放音频文件_详解使用pygame播放一段MP3音频文件
近日,在梳理pygame模块的时候发现一个很有用的模块mixer模块,这个模块翻译过来就是混音器,它可以加载和播放音频文件,甚至可以对混音器进行设置和处理,其功能非常强大。今天,我们一起来梳理一下混音器的用法,并使用这个混音器中的music类对一段MP3文件进行播放测试。
mixer混音器播放mp3文件
mixer类
mixer类是pygame中用于加载和播放声音的模块,游戏中这个模块作用很重要哦。mixer类有下面的方法,我们逐一进行解释说明,如下图所示。
mixer混音器类的方法汇总
使用混音器类时,必须注意以下事项:
使用之前需要进行初始化操作,否则会提示异常。初始化方法为:pygame.mixer.init()。当然,可以使用get_init()方法来判断初始化是否成功。混音器模块的声音播放通道数量是有限的。一般情况下,程序会告诉pygame开始播放音频,它会自动选择一个可用的频道。默认mixer有8个同步通道,自定义的混合通道可以精准控制。声音的播放一般是混合后由后台线程执行。开始播放声音对象时,它将在声音继续播放时立即返回。当然了,单个声音对象也可以主动循环多次进行播放。混音器有一个特殊的流通道。这个流通道用于音频播放,它可以通过pygame.mixer.music模块访问,以控制流式音频模块。pygame无法执行声音的重采样。pygame将控制播放速率和样本大小的参数默认设置为合理的值,以匹配音频资源的相关参数。mixer类的初始化参数
mixer的初始化函数定义如下:
初始化混音器模块以加载和播放声音。可以重写默认参数以提供特定的音频混合,也可以接受关键字参数自定义混音信息。对于参数设置为零的向后兼容性,使用默认值(可能由pre_init调用更改)。
init(frequency=22050, size=-16, channels=2, buffer=4096, devicename=None, allowedchanges=AUDIO_ALLOW_FREQUENCY_CHANGE | AUDIO_ALLOW_CHANNELS_CHANGE)
函数返回值为None
mixer混音器类的初始化
size:表示每个音频样本使用多少位,如果该值为负值,则将使用带符号的样本值。正值表示将使用无符号音频样本。无效值引发异常。
channels:用于指定是使用单声道还是立体声。单声道1个,立体声2个。
buffer:控制混音器中使用的内部采样数。对于大多数情况,默认值应该有效。它可以降低以减少延迟,但声音可能会丢失。它可以提高到更大的值,以确保播放不会跳过,但它会对声音播放造成延迟。缓冲区大小必须是2的幂(如果不是,则四舍五入到下一个最接近的2的幂)。
allowedChanges:匹配不同的硬件支持。当其为0时,它将在运行时转换示例以匹配硬件支持的内容。例如,声卡可能不支持16位声音样本,因此它将在内部使用8位样本。如果提供了音频允许格式更改,则请求的格式将更改为SDL2支持的最接近的格式。
硬件匹配参数有下面几种选项
硬件属性设置
AUDIO_ALLOW_FREQUENCY_CHANGEAUDIO_ALLOW_FORMAT_CHANGEAUDIO_ALLOW_CHANNELS_CHANGEAUDIO_ALLOW_ANY_CHANGE
对于混音器类,mixer提供的参数是比较全面的,但是对于小白来说使用混音器类播放一段音频文件主要使用两个类sound或music。它们也提供了具体的控制播放的方法和相关参数。下面我们梳理一下。
Sound类详解
该类的主要作用是:从文件或缓冲区对象创建新的声音对象。上面也讲过,Sound类主要播放的声音对象是ogg或者wav格式的声音对象。它接收一个声音对象,该对象可以是文件名、文件对象、buffer对象等,它提供的方法有下面几个:
Sound类参数详解
play:播放声音
stop:停止播放声音
fadeout:淡出后停止声音播放
set_volume:设置此声音的播放音量
get_volume:获取播放音量
get_num_channels:数一数这个声音播放了多少次
get_length:获取声音的长度
get_raw:返回声音样本的字节字符串副本
对于music也提供了上述方法。下面我们通过一个例子来展示使用pygame播放MP3文件。
使用pygame播放MP3文件
具体代码如下图所示。
播放MP3文件源代码
程序执行后弹出窗体开始播放MP3文件(time.sleep(200)后结束)。感兴趣的朋友们可以输入源代码测试下,mixer功能很强大,大家可以根据这个制作一个专属于自己的播放器哦,要知道Python是一门跨平台的语言,播放器完成后,随处可以播放的,可以放在自己的树莓派里,怎么样?是不是很酷?后续和大家一起做一个……
本文只是对mixer混合器类的常用属性及操作进行了梳理,还有更多用途等待大家发现哦,欢迎大家留言讨论。
转载请注明出处(百家号:Python高手养成)
python播放音频文件_详解使用pygame播放一段MP3音频文件相关推荐
- python3.6打包成exe文件_详解如何将python3.6软件的py文件打包成exe程序
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python read_excel 参数_详解pandas库pd.read_excel操作读取excel文件参数整理与实例
详解pandas库pd.read_excel操作读取excel文件参数整理与实例 来源:中文源码网 浏览: 次 日期:2019年11月5日 详解pandas库pd.read_excel操作 ...
- python可以播放音乐吗_详解python播放音频的三种方法
第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...
- python获取mp3音频数据_详解python进行mp3格式判断 python怎么读取mp3文件
python中哪个库有em算法 EM算法初稿2016-4-28 初始化三个一维的高斯分布 from numpy import * import numpy as np import matplotli ...
- python登录系统文件版_详解用python实现基本的学生管理系统(文件存储版)(python3)...
这个是升级的版本,比较进阶一点的,相对与之前的文件管理系统,数据只是存储到了内存中,而不是存储到硬盘上,我们想让文件存储到硬盘上的话,一个是存储到文件里,一个是存储到数据库中,存储到数据库中的版本会后 ...
- python程序怎么修改_详解Python文件修改的两种方式
文件的数据是存放于硬盘上的,因而只存在覆盖.不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式. 一.方式一 将硬盘存放的该文件的内容全部加载到内存,在内存中是可以 ...
- python变量定义大全_详解python变量与数据类型
这篇文章我们学习 Python 变量与数据类型 变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问.在 Python 中 变量命名规定,必须是大小写英文,数字 ...
- python模块搜索原则_详解python模块路径查找规则及定义
在python中创建一个模块非常简单,只需要在当前目录下创建一个 .py文件即可,系统自动将其解析成模块,文件名就是模块名.很多我们源码时代的同学都认为在查找模块时优先使用当前目录下的自定义模块.其实 ...
- python3 yield 大文件_详解Python3中yield生成器的用法
任何使用yield的函数都称之为生成器,如: def count(n): while n > 0: yield n #生成值:n n -= 1 另外一种说法:生成器就是一个返回迭代器的函数,与普 ...
最新文章
- SLAM:现在,未来和鲁棒感知时代
- 慎用MySQL replace语句
- Hyperledger Fabric 管道(2) 管道的操作
- python读程序是什么意思_0基础学Python之一:什么是程序?
- php 获取权限,php 获取权限列表函数_PHP教程
- 周末包邮送书和小红包中奖名单公布
- oracle11g关闭库,Oracle11g中SYS连接阻止关闭数据库
- 流媒体视频质量评价(单刺激连续质量评价方法)
- 软件开发合同模板范本
- 三相逆变器仿真matlab,在MATLAB中实现三相电压型逆变器仿真
- 数据库mysql基本查询语句_数据库mysql基础查询语句实录
- Excel学习笔记3||逻辑函数AND、OR、NOT、XOR、IF、IFS和查找函数VLOOKUP
- 远程智能开关安装方法
- mysql 需要什么硬件配置_Mysql的硬件优化和配置优化
- AI 场景存储优化:云知声超算平台基于 JuiceFS 的存储实践
- 音频剪辑软件分享,教你快速剪辑音频
- 再见python你好go语言_再见,Python。你好,Go语言。
- 安利安卓模拟器-夜神模拟器
- 学计算机的人常备哪些护眼的东西,常用电脑的人如何保护视力?
- java 支付宝帐单_java后台实现支付宝对账功能的示例代码
热门文章
- 美女图片整站源码 wordpress主题多功能CX-UDY图片主题下载 带会员积分系统
- Xcode下载结果校验
- linux strace 源码,strace-4.3.rar
- Vue的缓存方法localstorage、sessionStorage
- Hough transform
- WorkPlus 赋能数字政府迈入发展新阶段
- Jmeter接口测试——配置全局token
- BLE 技术(九)--- SIG MESH Models 是如何设计的(下)?
- Python学习笔记——开发图形界面wxPython、PyQt、PySide选哪一个?
- 中国石油大学(北京)-《石油加工工程》第二阶段在线作业