关于pygame.mixer播放音频问题求助

saiumr 2018-12-15 12:43:31
import pygame
pygame.init()
pygame.mixer.init()

sound = pygame.mixer.Sound('Pikachu (36).wav')
sound.play()

pygame.time.wait(int(sound.get_length()) * 1000) 上面那段是我在网上看到的,实际上我用过很多方法,运行无误但都没有声音。可是我初始化一个界面之后就会有声音。 想问一下csdn的各位,怎样不要界面也能播放出来? 还有一个问题,用pygame.mixer.music.play()播放时声音(有界面时)会变,想问一下怎么解决?还是说有其他更好的方法
...全文
288 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
M Friday 2019-04-22
  • 打赏
  • 举报
回复
楼主,感谢你的回复,我用软件查看了音乐的频率,然后在pygame的API里设置一个参数就解决了,声音播放正常,我明天把代码发给你,就一行而已,另外这个包特别适合在Linux下播放音乐,录音也挺好的,比较清晰册吧
saiumr 2019-04-21
  • 打赏
  • 举报
回复
这是我在网上找到的比较专业的方法,不太懂。需要安装pyaudio模块 import os import wave import random import pyaudio #当前路径 pwd = os.getcwd() print(pwd) filepath = pwd + '\\Pokemon' #当前工作路径、子目录、文件名 for root, dirs, files in os.walk(filepath): i = random.randint(0, 96) filename = filepath +'\\' + files[i] print(filename) #这里的r和后面的b控制开始结束 wf = wave.open(r'%s' % filename, 'rb') #wf =wave.open(filenanme, mode’)此处读取音频文件,返回instance对象类 p = pyaudio.PyAudio() stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),#取样值的量化格式 channels = wf.getnchannels(),#声道数 rate = wf.getframerate(),#取样频率 output = True)#开启输出流 while True: data = wf.readframes(1000)#从音频流中读取1000个采样数据,data类型为str.注意对音频流的读写都是字符串 if data == b'':#判断是否结束 break stream.write(data)#从wf中读数据,然后写到stream中。就是从文件中读取数据然后写到声卡里 #print('都是True惹的祸') stream.stop_stream()#暂停 stream.close()#关闭 p.terminate()#关闭 PyAudio
saiumr 2019-04-21
  • 打赏
  • 举报
回复
嗯,这个问题解决了。也是在网上看到的方法,将音频流转化二进制数据再读出来,与原声无误,不过我并不是很懂,解决的方法有点专业。待会儿我把源码发给你。
M Friday 2019-04-12
  • 打赏
  • 举报
回复
我的声音也会变,应该是频率的问题,,,楼主解决了吗?

488

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧