song = "choy_san_dou.ogg"
pygame.init()
pygame.display.set_mode((200,100))
pygame.mixer.init()
pygame.mixer.music.load(song)
pygame.mixer.music.set_volume(0.1)
pygame.mixer.music.play(0)
我无法找到一种在歌曲加载时淡入音量的方法,这意味着让歌曲的音量慢慢增加直到最大音量,而不是从一开始就将其音量调到最大。怎么做?
另一个问题是这个,我必须声明
pygame.display.set_mode((200,100))
否则声音不会播放。该程序实际上正在运行,因为声音经过一段时间后,程序中的后续步骤仍在继续。为什么会这样呢?我正在windows pc上测试它,打算稍后将其转移到树莓派上。
最佳答案
pygame.mixer 模块有一个 Sound 类(文档: http://www.pygame.org/docs/ref/mixer.html ),它将文件名作为输入并将文件内容转换为 Sound 对象。声音对象有一个 play() 方法,您可以在其中指定声音淡入的时间量(您可能希望使其比声音的实际长度短得多)。我建议您阅读文档以了解 pygame.mixer 的工作原理。如果你想改变 Sound 对象,例如添加淡入或淡出,可以使用 pygame.sndarray 模块将 Sound 对象转换为 numpy 数组,反之亦然,尽管你需要使用 numpy 或 scipy使用该数组执行操作(我推荐免费的 Anaconda 包)。
音乐模块和混音器模块之间的区别在于音乐模块流式传输数据以进行播放,而混音器模块处理保存到主内存的数据。
关于python pygame 如何淡入音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38454892/