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

本文介绍了如何使用Python的PyAudio模块播放WAV音频流,并详细展示了通过PyAudio播放音频的同时,将解码的帧内容实时记录到文件中。文章探讨了屏幕输出与文件输出的性能差异,指出屏幕输出可能导致性能瓶颈,而文件输出则不会影响程序执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

安装PyAudio

使用pip工具来安装PyAudio:

pip3 install pyaudio

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

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

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

需要PortAudio开发包的支持。

优快云实践

笔者根据优快云上的这篇笔记实践使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值