【问题标题】:Python Pyaudio -- How to play a file streamed via HTTPPython Pyaudio——如何播放通过 HTTP 流式传输的文件
【发布时间】:2016-05-25 03:29:47
【问题描述】:
我试图弄清楚如何播放存在于我的服务器上通过 HTTP 提供的 mp3。我试图弄清楚 pyglet 但 AVBin 存在太多问题而无法使其正常工作(关于在源代码中除以零的问题)。所以,我决定尝试 PyAudio,但我不知道如何用它从 HTTP 流式传输 mp3 源。所有示例都是 wav 文件,我需要示例而不是文档,否则恐怕我必须弄清楚音频如何在最低级别上工作的细节。对于我们这些不懂行话(采样率等)的人来说,所有文档都令人困惑。有人可以帮忙吗?
【问题讨论】:
标签:
python
audio
mp3
audio-streaming
pyaudio
【解决方案1】:
您的源和目标服务器环境是什么? [windows/linux/mac? ]。您还尝试播放音频文件或视频吗?
在任何一种情况下,您都可以在 python 中使用Gstreamer。我有 Windows 笔记本电脑,所以我尝试使用来自 here 的 Gstreamer 1.0.x
在线示例适用于 Gstreamer 0.10,不适用于较新的 Gstreamer 1.0。有很多特定于平台的修改。
但是,在 Windows 上,Gstreamer 附带了现成的 gst-launch 二进制文件。 [对于 Linux 有等效的二进制文件]
设置
服务器端:
在服务器端,您需要设置 HTTP 服务器。在不知道您的环境细节的情况下,我可以说有各种可用的解决方案,包括 python http server SimpleHTTPServer。
见解决方案here
客户端:
在您的笔记本电脑上安装并运行 http 服务器后,您可以简单地运行
C:\Python27\Lib\site-packages\gnome> .\gst-launch.exe playbin uri = http://www.freesound.org/data/previews/148/1482641337920-lq.mp3
将 http 服务器地址替换为您的服务器地址和端口。
您可以在 Python 脚本中调用 gst-launch 并使用它进行创作。
输出:
我已经从 freesound.org 成功打开了音频文件。它还应该打开一个从您的 http 服务器提供的音频文件。