使用Python进行音频流传输(无需GStreamer)

4
我正在开发一个涉及从我的Web服务器流式传输.OGG(或.mp3)文件的项目。我不想下载整个文件然后再播放它,有没有办法在纯Python中实现这一点(无GStreamer-希望使其真正跨平台)?是否有一种方法可以使用urllib按块下载文件,并将其加载到PyGame中以进行实际音频播放?
谢谢!

我也遇到了类似的问题。我正在尝试将音频文件转换为 base-64 块,以便通过网络发送并重新转换和播放客户端。 - Blazer
1
我听说GStreamer是跨平台的:http://en.wikipedia.org/wiki/GStreamer。 - tshepang
1个回答

1

我猜你的服务器支持范围请求。你可以通过头部Range来询问服务器,指定你想要的范围的起始字节和结束字节:

import urllib2

req = urllib2.Request(url)
req.headers['Range'] = 'bytes=%s-%s' % (startByte, endByte)
f = urllib2.urlopen(req)

f.read()

你可以实现一个文件对象,并且总是从服务器下载所需的文件块。几乎每个库都接受文件对象作为输入。
因为网络延迟,它可能会很慢。你需要下载更大的文件块,在单独的线程中预加载文件等。换句话说,你需要自己实现流客户端逻辑。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接