python流播放_使用PyAudio模块播放音频流之体会

PyAudio是Python下的一个音频处理模块,用于将音频流输送到计算机声卡上。理论上,该模块能够播放任何解码器解码而成的有效音频帧。

安装PyAudio

使用pip工具来安装PyAudio:

pip3 install pyaudio

不同系统的安装过程有所不同:

Windows下与Django、Flask等纯Python模块无异,不需编译非Python语言的源码。

但在Linux下,还须编译用C/C++编写的底层音频库,这点类似于Node.js下那些拥有C++模块、要用gyp单独编译的软件包。

需要PortAudio开发包的支持。

CSDN实践

笔者根据CSDN上的这篇笔记实践使用PyAudio模块播放音频。作者 @一个处女座的程序猿 所演示的格式为WAV,使用Python自带的Wave文件处理模块wave进行解码。但是,他的笔记写的不够完善,为此笔者特地对代码进行了修正,并加了更多注释。

为了更细致地探究相关模块运行时所产生的数据,笔者还将解码时所产生的帧内容转换成文本,记录在文件当中。

最终笔者修改而成的代码如下:

# 引入模块

from pyaudio import *

import wave

def play():

# 用文本文件记录wave模块解码每一帧所产生的内容。注意这里不是保存为二进制文件

dump_buff_file=open(r"Ring01.dup", 'w')

chunk=1 # 指定WAV文件的大小

wf=wave.open(r"Ring01.wav",'rb') # 打开WAV文件

p=PyAudio() # 初始化PyAudio模块

# 打开一个数据流对象,解码而成的帧将直接通过它播放出来,我们就能听到声音啦

stream=p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True)

data = wf.readframes(chunk) # 读取第一帧数据

print(data) # 以文本形式打印出第一帧数据,实际上是转义之后的十六进制字符串

# 播放音频,并使用whi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值