Python使用pygame播放mp3报mpg123_seek无效RVA模式错误如何解决
报错原因
触发pygame.error: mpg123_seek: Invalid RVA mode. (code 12)错误的核心原因有两个:
- Pygame 2.x早期版本内置的mpg123解码器存在兼容bug,对携带自定义RVA(相对音量校准)元数据的MP3文件解析失败,就会抛出这个错误。
- 你提供的代码存在Python语法层面的缩进错误,Python对代码缩进有强制要求,原代码中函数内部逻辑、主程序入口的调用逻辑都没有正确缩进,即使音频文件正常也无法正常运行。
修复步骤
- 优先升级Pygame到最新稳定版本,新版本已经修复了绝大多数mpg123解码器的RVA解析兼容问题,执行命令完成升级:
pip install --upgrade pygame - 如果升级后仍然报相同错误,说明当前MP3文件的元数据特殊标签无法被解码器兼容,可以将音频文件转换为OGG格式(Pygame对OGG格式的兼容稳定性远高于MP3),或者用音频编辑工具清除MP3文件内的RVA、专辑增益类自定义元数据后再使用。
- 修正代码的缩进问题,统一使用4空格作为函数、判断语句内部代码的缩进标准,同时确认音频文件路径填写正确,文件和脚本在同一目录下时直接写文件名即可,否则需要填写完整绝对路径。
修正后可运行代码
from pygame import mixer def wateronloop(file, stopper): mixer.init() mixer.music.load(file) mixer.music.set_volume(0.5) mixer.music.play() while True: usin = input("To stop the music, type s: ") if usin == stopper: mixer.music.stop() break if __name__ == '__main__': wateronloop("water.mp3", "s")
内容的提问来源于stack exchange,提问作者SudeepP
相关产品推荐
相关产品推荐

