pygame.mixer

用于加载和播放声音的pygame模块

函数

  • pygame.mixer.init  —  初始化混音器模块
  • pygame.mixer.pre_init  —  预设混音器初始化参数
  • pygame.mixer.quit  —  卸载混音器模块
  • pygame.mixer.get_init  —  测试混音器是否初始化
  • pygame.mixer.stop  —  停止播放所有通道
  • pygame.mixer.pause  —  暂停播放所有通道
  • pygame.mixer.unpause  —  恢复播放
  • pygame.mixer.fadeout  —  淡出停止
  • pygame.mixer.set_num_channels  —  设置播放频道的总数
  • pygame.mixer.get_num_channels  —  获取播放频道的总数
  • pygame.mixer.set_reserved  —  预留频道自动使用
  • pygame.mixer.find_channel   —  找到一个未使用的频道
  • pygame.mixer.get_busy  —  测试混音器是否正在使用

  • pygame.mixer.Sound   —  从文件或缓冲区对象创建新的Sound对象
  • pygame.mixer.Channel   —  创建一个Channel对象来控制播放

此模块包含用于加载 Sound 对象和控制播放的类。混音器模块是可选的,取决于SDL_mixer。您的程序应该在使用它之前 测试 pygame.mixer 模块是否可用并进行初始化。

混音器模块具有有限数量的声音播放声道。通常程序会告诉 pygame 开始播放音频,它会自动选择一个可用的频道。默认为8个并发通道,但复杂的程序可以更精确地控制通道数量及其使用。

所有声音播放都混合在后台线程中。当您开始播放Sound对象时,它会在声音继续播放时立即返回。单个Sound对象也可以自动播放多次。

混音器还有一个特殊流通道用于音乐播放,可通过 pygame.mixer.music 模块访问。

混音器模块必须像其他 pygame 模块一样进行初始化,但它有一些额外的条件。pygame.mixer.init() 函数采用几个可选参数来控制播放速率和样本大小。Pygame将 默认为合理的值,但pygame无法执行声音重采样,因此应初始化混音器以匹配音频资源的值。

注意:不要使用较少的延迟声音,请使用较小的缓冲区大小。 默认设置为减少某些计算机上发出沙哑声音的可能性。 您可以在 pygame.mixer.init() 或者 pygame.init() 之前 通过调用pygame.mixer.pre_init()预设混合器初始化参数来更改默认缓冲区。 例如:pygame.mixer.pre_init(44100,-16,2,1024)。在pygame 1.8中,默认大小从1024更改为3072。

函数详解

pygame.mixer.init()

初始化混音器模块
init(frequency=22050, size=-16, channels=2, buffer=4096) -> None
初始化混音器模块以进行声音加载和播放。默认参数可以被改变以提供特定的音频混合。允许使用关键字参数。对于参数设置为零的向后兼容性,使用默认值(可能由pre_init调用更改)。

size参数表示每个音频样本使用的位数。如果值为负,则将使用带符号的样本值。正值表示将使用不带符号的音频样本。无效值会引发异常。

pygame 2中的新功能(使用SDL2编译时) - 大小可以是32(32位浮点数)。

channels参数用于指定是使用单声道还是立体声。1表示单声道,2表示立体声。不支持其他值(负值被视为1,大于2的值被视为2)。

buffer参数控制混音器中使用的内部采样数。默认值应适用于大多数情况。可以降低它以减少延迟,但可能会发生声音丢失。它可以被提升到更大的值,以确保播放永远不会跳过,但它会对声音播放施加延迟。缓冲区大小必须是2的幂(如果不是,则向上舍入到下一个最接近的2的幂)。

某些平台需要在 display 模块初始化后初始化pygame.mixer 模块。顶级pygame.init() 自动处理此问题,但无法将任何参数传递给 mixer init。为了解决这个问题,mixer 具有pygame.mixer.pre_init() 函数在使用顶层初始化之前设置正确默认值。

多次调用是安全的,但是在初始化混音器后,如果没有先调用 pygame.mixer.quit(),则无法更改播放参数 。

pygame.mixer.pre_init()

预设混音器初始化参数

pre_init(frequency=22050, size=-16, channels=2, buffersize=4096) -> None

调用 pre_init 可以更改调用 真正的初始化 pygame.mixer.init() 使用的默认值。允许使用关键字参数。设置自定义混音器播放值的最佳方法是 在调用顶级 pygame.init() 之前调用 pygame.mixer.pre_init()。对于向后兼容性参数,零值将替换为启动默认值。

pygame.mixer.quit(

退出混音器

quit() -> None

这将卸载 pygame.mixer,如果稍候重新初始化,则所有播放将停止并且任何加载的Sound对象可能与混音器不兼容。

pygame.mixer.get_init()

测试混音器是否初始化

get_init() -> (frequency, format, channels)

如果混合器已初始化,则返回正在使用的播放参数。如果混音器尚未初始化,则返回None

pygame.mixer.stop()

停止播放所有声道

stop() -> None

这将停止所有活动混音器通道的播放。

pygame.mixer.pause()

暂时停止播放所有声道

pause() -> None

这将暂时停止活动混音器通道上的所有播放。稍后可以 通过 pygame.mixer.unpause() 恢复播放

pygame.mixer.unpause()

恢复播放声道

unpause() -> None

这将在暂停后恢复所有活动声道。

pygame.mixer.fadeout()

停止前淡出所有声音的音量

fadeout(time) -> None

这将在设定时间上淡出所有活动通道上的音量,时间以毫秒为单位。声音静音后,播放将停止。

pygame.mixer.set_num_channels()

设置播放频道的总数

set_num_channels(count) -> None

设置调音台的可用频道数。默认值为8。可以增加或减少该值。如果该值减小,则截断的通道上播放的声音将停止。

pygame.mixer.get_num_channels()

获取播放频道的总数

get_num_channels() -> count

返回当前活动的播放通道数。

pygame.mixer.set_reserved()

预留频道自动使用

set_reserved(count) -> None

调音台可以保留任意数量的通道,这些通道不会被声音自动选择播放。如果声音当前正在预留频道播放,则不会停止。

这允许应用程序为重要声音保留特定数量的声道,这些声音不得被丢弃或具有可保证的频道。

pygame.mixer.find_channel()

找到一个未使用的频道

find_channel(force=False) -> Channel

这将找到并返回一个非活动的Channel对象。如果没有非活动通道,则此函数将返回None。如果没有非活动通道且force参数为True,则会找到运行时间最长的声道并返回它。

如果调音台有 pygame.mixer.set_reserved() 保留频道,则此处不会返回这些频道。

pygame.mixer.get_busy()

测试mixer 是否正忙

get_busy() -> bool

如果混音器正忙,则返回True。如果混音器处于空闲状态,则返回False。

pygame.mixer.Sound

从文件或缓冲区对象创建新的Sound对象

Sound(filename) -> Sound
Sound(file=filename) -> Sound
Sound(buffer) -> Sound
Sound(buffer=buffer) -> Sound
Sound(object) -> Sound
Sound(file=object) -> Sound
Sound(array=object) -> Sound

  • pygame.mixer.Sound.play        -        开始播放声音
  • pygame.mixer.Sound.stop        -        停止声音播放
  • pygame.mixer.Sound.fadeout        -        淡出后停止声音播放
  • pygame.mixer.Sound.set_volume        -        设置此声音的播放音量
  • pygame.mixer.Sound.get_volume        -        获取播放音量
  • pygame.mixer.Sound.get_num_channels        -        计算此声音播放的次数
  • pygame.mixer.Sound.get_length        -        得到声音的长度
  • pygame.mixer.Sound.get_raw        -        返回Sound样本的bytestring副本。

从文件名,python文件对象或可读缓冲区对象加载新的声音缓冲区。将执行有限的重新采样以帮助样本匹配混音器的初始化参数。Unicode字符串只能是文件路径名。Python 2.x字符串或Python 3.x字节对象可以是路径名或缓冲区对象。使用'file'或'buffer'关键字来避免歧义; 否则Sound可能会猜错。如果使用了array关键字,则该对象应该导出版本3,C级别数组接口,或者对于Python 2.6或更高版本,导出新的缓冲区接口(首先检查该对象的缓冲区接口。)

Sound对象表示实际的声音样本数据。更改Sound对象状态的方法将是Sound播放的所有实例。Sound对象还导出数组接口,对于Python 2.6或更高版本,还会导出新的缓冲区接口。

可以从OGG音频文件或未压缩的 WAV 文件加载声音。

注意:缓冲区将在内部复制,不会在它与Sound对象之间共享数据。

目前缓冲区和数组支持与sndarray.make_sound 数值数组一致,因为忽略了样本符号和字节顺序。这将通过正确处理符号和字节顺序或在不同时引发异常来改变。此外,截断源样本以适合音频样本大小。这不会改变。

pygame.mixer.Sound(buffer)是pygame 1.8中新增的pygame.mixer.Sound关键字参数和数组接口支持pygame 1.9.2中的新功能。

play()

开始播放声音

play(loops=0, maxtime=0, fade_ms=0) -> Channel

在可用频道上开始播放声音(即,在计算机的扬声器上)。 这将强制选择一个频道,因此如有必要,播放可能会切断当前正在播放的声音。

loops参数控制第一次播放后样本重复的次数。 值 5 表示声音将播放一次,然后重复播放五次,因此共播放六次。 默认值(0)表示声音不重复,因此只播放一次。 如果循环设置为-1,则Sound将无限循环(但是您仍然可以调用stop()来停止它)。

maxtime参数可用于在给定的毫秒数后停止播放。

fade_ms参数将使声音以0音量开始播放,并在给定时间内逐渐升至全音量。 样本可以在淡入完成之前结束。

这将返回所选通道的Channel对象。

stop()

停止声音播放

stop() -> None

这将停止在任何活动频道上播放此声音。

fadeout()

淡出后停止声音播放

fadeout(time) -> None

这将在以毫秒为单位在时间参数上淡出后停止播放声音。Sound会在所有播放的频道上消失并停止。

set_volume()

设置此声音的播放音量

set_volume(value) -> None

这将设置此声音的播放音量(响度)。如果正在播放,这将立即影响声音。它也会影响此声音的任何未来播放。参数是从0.0到1.0的值。

get_volume()

获取播放音量

get_volume() -> value

返回0.0到1.0之间的值,表示此Sound的音量。

get_num_channels()

计算此声音播放的次数

get_num_channels() -> count

返回此声音正在播放的活动频道数。

get_length()

得到声音的长度

get_length() -> seconds

以秒为单位返回此声音的长度。

get_raw()

返回Sound样本的bytestring副本。

get_raw() -> bytes

将Sound对象缓冲区的副本作为字节(对于Python 3.x)或str(对于Python 2.x)对象返回。

pygame 1.9.2中的新功能。

pygame.mixer.Channel

创建一个Channel对象来控制播放

Channel(id) -> Channel

  • pygame.mixer.Channel.play        -        在特定频道播放声音
  • pygame.mixer.Channel.stop        -        停止在频道上播放
  • pygame.mixer.Channel.pause        -        暂时停止播放频道
  • pygame.mixer.Channel.unpause        -        恢复暂停播放频道
  • pygame.mixer.Channel.fadeout        -        淡出通道后停止播放
  • pygame.mixer.Channel.set_volume        -        设置播放频道的音量
  • pygame.mixer.Channel.get_volume        -        获得播放频道的音量
  • pygame.mixer.Channel.get_busy        -        检查通道是否处于活动状态
  • pygame.mixer.Channel.get_sound        -        得到当前播放的声音
  • pygame.mixer.Channel.queue        -        排队Sound对象以跟随当前
  • pygame.mixer.Channel.get_queue        -        返回排队的任何声音
  • pygame.mixer.Channel.set_endevent        -        播放停止时让频道发送事件
  • pygame.mixer.Channel.get_endevent        -        获取播放停止时频道发送的事件

返回其中一个当前通道的Channel对象。id必须是从0到 值pygame.mixer.get_num_channels() 的值。

Channel对象可用于精确控制Sounds的播放。一个频道只能播放一个声音。使用频道完全是可选的,因为pygame默认可以管理它们。

play()

在特定频道上播放声音

play(Sound, loops=0, maxtime=0, fade_ms=0) -> None

这将开始播放特定频道上的声音。 如果频道正在播放任何其他声音,它将被停止。

loops参数与Sound.play()中的含义相同:它是第一次重复声音的次数。 如果是3,声音将播放4次(第一次,然后是三次)。 如果循环为-1,则播放将无限重复。

与Sound.play()一样,maxtime参数可用于在给定的毫秒数后停止播放声音。

与Sound.play()一样,fade_ms参数可以在声音中淡入淡出。

stop()

停止在频道上播放声音

stop() -> None

停止在频道上播放声音。播放停止后,频道可用于播放新的声音。

pause()

暂时停止播放频道

pause() -> None

暂时停止在频道上播放声音。它可以在之后调用 Channel.unpause() 恢复

unpause()

恢复暂停播放频道

unpause() -> None

在暂停的频道上恢复播放。

fadeout()

淡出通道后停止播放

fadeout(time) -> None

在给定时间参数上淡出声音后,以毫秒为单位停止播放通道。

set_volume()

设置播放频道的音量

set_volume(value) -> None

set_volume(left, right) -> None

设定播放声音的音量(响度)。当频道开始播放时,其音量值将被重置。这只会影响当前的声音。value参数介于0.0和1.0之间。

如果传递一个参数,则它将是两个发言者的音量。如果传递两个参数并且混音器处于立体声模式,则第一个参数将是左扬声器的音量,第二个参数将是右扬声器的音量。(如果第二个参数为None,则第一个参数将是两个扬声器的音量。)

如果频道正在播放set_volume()已调用的声音,则会同时考虑这两个呼叫。例如:

sound = pygame.mixer.Sound("s.wav")
channel = s.play()      # Sound plays at full volume by default
sound.set_volume(0.9)   # Now plays at 90% of full volume.
sound.set_volume(0.6)   # Now plays at 60% (previous value replaced).
channel.set_volume(0.5) # Now plays at 30% (0.6 * 0.5).

get_volume()

获得播放频道的音量

get_volume() -> value

返回当前播放声音的通道音量。这没有考虑到使用的立体声分离 Channel.set_volume()。Sound对象也有自己的音量,与音频混合。

get_busy()

检查通道是否处于活动状态

get_busy() -> bool

如果通道正在主动混合声音,则返回true。如果通道空闲,则返回False。

get_sound()

得到当前播放的声音

get_sound() -> Sound

返回当前在此频道上播放的实际Sound对象。如果通道空闲,则返回None。

queue()

排队Sound对象以跟随当前

queue(Sound) -> None

当声音在频道上排队时,它将在当前声音结束后立即开始播放。每个通道一次只能排队一个声音。排队的声音仅在当前播放自动结束时播放。在对Channel.stop()或的任何其他呼叫中清除它 Channel.play()。

如果在频道上没有主动播放声音,则声音将立即开始播放。

get_queue()

返回排队的任何声音

get_queue() -> Sound

如果声音已在此频道上排队,则会返回该声音。一旦排队的声音开始播放,它将不再在队列中。

set_endevent()

播放停止时让频道发送事件

set_endevent() -> None

set_endevent(type) -> None

当为某个频道设置了一个尝试时,每当一个声音在该频道上播放时(不仅仅是第一次),它就会向一个游戏队列发送一个事件。使用pygame.event.get()一旦它发送到检索ENDEVENT。

请注意,如果您调用Sound.play(n)或Channel.play(sound,n),结束事件仅发送一次:声音播放“n + 1”次后(请参阅Sound.play文档)。

如果在声音仍然播放时调用Channel.stop()或Channel.play()调用,则会立即发布事件。

type参数将是发送到队列的事件id。这可以是任何有效的事件类型,但一个好的选择是pygame.locals.USEREVENT和之间的值 pygame.locals.NUMEVENTS。如果没有给出类型参数,那么Channel将停止发送事件。

get_endevent()

获取播放停止时频道发送的事件

get_endevent() -> type

返回每次Channel完成声音播放时要发送的事件类型。如果没有功能返回该功能 pygame.NOEVENT。

Pygame详解(九):mixer 模块相关推荐

  1. python笔记-Pygame详解(十七):joystick 模块

    感谢:来自江南的你 Pygame详解(十七):joystick 模块 #coding:utf-8 import pygame# Define some colors定义一些颜色 BLACK = ( 0 ...

  2. Pygame详解(十八):mask 模块

    pygame.mask Pygame 中处理图形遮罩的模块. 函数 pygame.mask.from_surface()  --  从指定 Surface 对象中返回一个 Mask pygame.ma ...

  3. Pygame详解:前言

    Pygame官网:https://www.pygame.org Pygame的官网是有详细的文档的:https://www.pygame.org/docs/ 下图是Pygame 的所有类和模块,都有对 ...

  4. python中yaml模块的使用_详解Python yaml模块

    一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...

  5. python实现日历功能_详解Python日历模块的使用

    calendar模块的函数都是日历相关的,提供了对日期的一些操作方法,和生成日历的方法. calendar模块中提供了三大类: 一.calendar.Calendar(firstweekday=0) ...

  6. Pygame详解(七):key 模块

    pygame.key 与键盘相关的 Pygame 模块. 函数 pygame.key.get_focused()  -  当窗口获得键盘的输入焦点时返回 True pygame.key.get_pre ...

  7. Pygame详解(二):display 模块

    pygame.display Pygame 中用于控制窗口和屏幕显示的模块. 注:为了适应语境,display 在该文档中有时翻译为"显示",有时翻译为"显示界面&quo ...

  8. Pygame详解(十六):cursors 模块

    pygame.cursors Pygame 中使用光标资源的模块. 函数 pygame.cursors.compile()  --  由纯字符串创建二进制光标数据 pygame.cursors.loa ...

  9. Pygame详解(十七):joystick 模块

    pygame.joystick 与游戏杆.游戏手柄.追踪球进行交互的 pygame 模块. 函数 pygame.joystick.init()  -  初始化 joystick 模块 pygame.j ...

  10. Pygame详解(四):event 模块(有USEREVENT事件)

    pygame.event 用于处理事件与事件队列的 Pygame 模块. 函数 pygame.event.pump()  -  让 Pygame 内部自动处理事件 pygame.event.get() ...

最新文章

  1. 90后教授:回国是用数学计算出的“最优解”
  2. Storm介绍及安装部署
  3. U盘安装CentOS7跳坑记
  4. vs2017c语言单元测试,vs2017单元测试没反应,检测出错误,有关详细信息,请查看“测试输出”窗口...
  5. c语言教改课程项目,C语言程序设计课程的教学改革.pdf
  6. Java高并发编程详解系列-Future设计模式
  7. html5在线制作教程,HTML5 Canvas 制作动画
  8. 【知了堂学习笔记】java 自定义异常
  9. JavaScript变量相关总结
  10. ER图工具Visual Paradigm下载并设置中文
  11. 如何自学软件编程?零基础自学编程入门指南
  12. java JDK的下载与安装 JVM JRE JDK区别
  13. 数据库服务器sa 密码修改,修改vcenter数据库账号密码
  14. 使用Python调用OUTLOOK发邮件(带附件)
  15. codewars题目
  16. Facebook工程师告诉你,如何正确的阅读《算法导论》(CLRS)?
  17. 软件项目管理复习(一-七章)
  18. 【Android应用开发之前端——简易App登录页面】
  19. 北漂生活第十八弹-日子还照旧
  20. matlab的常量和变量运算符

热门文章

  1. 沟通类书籍推荐,这6本书助力你提高自身沟通能力
  2. 移动端关于手机横屏时样式修改
  3. s3c2416 AT070TN83的LCD wince6.0驱动移植
  4. 微服务超 10 万、跨语言场景,字节服务网格依靠 CloudWeGo 扛住流量洪峰
  5. Redis写副本内存不够
  6. 计算机算平方根原理,算术平方根与计算器
  7. ArcGIS中ObjectID,FID和OID字段区别
  8. 公众号再也不用为单独上传图片和排版发愁了
  9. Mac新手必备技巧之如何批量修改图片大小
  10. c语言 牛顿方法计算平方根,sqrt()平方根计算函数的实现2——牛顿迭代法