鱼C论坛

 找回密码
 立即注册
查看: 2296|回复: 3

[已解决]pygame 中 music 和Sound 模块的区别

[复制链接]
发表于 2021-9-18 13:27:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
pygame中music和Sound实现的功能和使用的方法都是差不多的。请高手科普一下这两个模块的区别。
我分别使用music和Sound模块对同一个音频文件进行调用,可是有一个能播放有一个不能播放。具体情况见下面的代码。
import pygame, sys

pygame.init()

pygame.mixer.init()


screen = pygame.display.set_mode([640,480])

pygame.time.delay(1000)


splat = pygame.mixer.Sound("11231.wav")

splat.play()


running = True

while running:

        for event in pygame.event.get():

                if event.type == pygame.QUIT:

                        running = False

pygame.quit()
使用这一段代码可以正常播放音效文件


import pygame, sys

pygame.init()

pygame.mixer.init()


screen = pygame.display.set_mode([640,480])


pygame.mixer.music.load('tlza.mp3')

pygame.mixer.music.play()


running = True

while running:

        for event in pygame.event.get():

                if event.type == pygame.QUIT:

                        running = False

                        pygame.quit()


而这一段就不能播放音乐文件
为什么?怎么解决?
谢谢!
还要music模块和sound模块究竟有什么区别,麻烦各位高人解答一下 万分感谢
最佳答案
2021-9-18 16:00:58
基本上 pygame 里的 mixer.Sound 和 mixer.music 导入的音源无差别
其它差别,就如字面上的意思一样,sound 表示声音,music 表示曲。
一般 music 适用于背景音效,因为其长度比 sound 更长(当然也有短的)
而 sound 更适合作为画面渲染效果音效(比如射击,子弹发出的声音等)

至於两者功能也稍微不同:

mixer.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 返迴聲音樣本的字節串副本


mixer.music
pygame.mixer.music.load 加載音樂文件進行播放
pygame.mixer.music.unload 卸載當前加載的音樂以釋放資源
pygame.mixer.music.play 開始播放音樂流
pygame.mixer.music.rewind 重新開始音樂
pygame.mixer.music.stop 停止音樂播放
pygame.mixer.music.pause 暫時停止音樂播放
pygame.mixer.music.unpause 恢復暫停的音樂
pygame.mixer.music.fadeout 淡出後停止音樂播放
pygame.mixer.music.set_volume 設置音樂音量
pygame.mixer.music.get_volume 獲取音樂音量
pygame.mixer.music.get_busy 檢查音樂流是否正在播放
pygame.mixer.music.set_pos 設置播放位置
pygame.mixer.music.get_pos 獲取音樂播放時間
pygame.mixer.music.queue 將聲音文件排隊以跟隨當前
pygame.mixer.music.set_endevent 讓音樂在播放停止時發送一個事件
pygame.mixer.music.get_endevent 獲取頻道在播放停止時發送的事件


我的代码如下图,我通常会以 music 作为背景曲,sound 作为游戏音效(一般都这样,但没有指定一定要这样,随意)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-18 16:00:58 | 显示全部楼层    本楼为最佳答案   
基本上 pygame 里的 mixer.Sound 和 mixer.music 导入的音源无差别
其它差别,就如字面上的意思一样,sound 表示声音,music 表示曲。
一般 music 适用于背景音效,因为其长度比 sound 更长(当然也有短的)
而 sound 更适合作为画面渲染效果音效(比如射击,子弹发出的声音等)

至於两者功能也稍微不同:

mixer.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 返迴聲音樣本的字節串副本


mixer.music
pygame.mixer.music.load 加載音樂文件進行播放
pygame.mixer.music.unload 卸載當前加載的音樂以釋放資源
pygame.mixer.music.play 開始播放音樂流
pygame.mixer.music.rewind 重新開始音樂
pygame.mixer.music.stop 停止音樂播放
pygame.mixer.music.pause 暫時停止音樂播放
pygame.mixer.music.unpause 恢復暫停的音樂
pygame.mixer.music.fadeout 淡出後停止音樂播放
pygame.mixer.music.set_volume 設置音樂音量
pygame.mixer.music.get_volume 獲取音樂音量
pygame.mixer.music.get_busy 檢查音樂流是否正在播放
pygame.mixer.music.set_pos 設置播放位置
pygame.mixer.music.get_pos 獲取音樂播放時間
pygame.mixer.music.queue 將聲音文件排隊以跟隨當前
pygame.mixer.music.set_endevent 讓音樂在播放停止時發送一個事件
pygame.mixer.music.get_endevent 獲取頻道在播放停止時發送的事件


我的代码如下图,我通常会以 music 作为背景曲,sound 作为游戏音效(一般都这样,但没有指定一定要这样,随意)

我的 pygame 部分代码

我的 pygame 部分代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-18 16:54:40 | 显示全部楼层
好的 谢谢 非常感谢,不过我还是有一个小小的疑问,为什么Sound是个类,而music是个模块。同时在官方的文档里,我看到sound的载入方式是从缓存中实例化一个声音实力,那么是不是说明Sound在每一次创建实例的时候进行了更标准的初始化??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-18 18:16:20 | 显示全部楼层
国产跑车 发表于 2021-9-18 16:54
好的 谢谢 非常感谢,不过我还是有一个小小的疑问,为什么Sound是个类,而music是个模块。同时在官方的文档 ...

没错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-12 11:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表