pygame调用mixer播放音频报TypeError类型错误
错误原因
这个类型报错是mixer.music.play()方法参数传错导致的:
- 你已经提前调用
mixer.music.load('walk the dinosaur.mp3')把音频文件加载到内存了,play()方法不需要再接收音频路径作为参数 play()的第一个位置参数是循环次数,必须传整数:默认值0代表播放1次,传正整数n代表额外重复n次(总共播n+1次),传-1代表无限循环播放。你把字符串格式的文件名传给这个要求整数的参数,就触发了报错。
另外你的代码里还有几处冗余无效内容:未使用的pyflakes导入、无意义的单独input语句、定义了没调用的wtd变量,都可以直接删除。还有原代码没有主事件循环,调用play后程序会立刻退出,根本听不到音频播放。
修复方法
删掉play方法里传入的文件名参数,根据你的播放需求传入正确的循环次数即可,同时补上pygame主循环保证程序不提前退出。
修复后可正常运行的代码:
import pygame from pygame import mixer pygame.init() mixer.init() # 加载音频文件 audio_path = 'walk the dinosaur.mp3' mixer.music.load(audio_path) print("music started playing....") # 设置音量 mixer.music.set_volume(0.2) # 播放音乐:传0代表播1次,传-1代表无限循环 mixer.music.play() # 主循环,保持程序运行 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.quit()
如果需要从音频指定位置开始播放,可以给play传第二个浮点类型参数,代表从第几秒开始播放,比如
mixer.music.play(0, 5)代表从第5秒开始播放1次。
内容的提问来源于stack exchange,提问作者Tristan Moran
相关产品推荐
相关产品推荐

