【问题标题】:Streaming audio using Python (without GStreamer)使用 Python 流式传输音频(没有 GStreamer)
【发布时间】:2012-02-25 06:23:40
【问题描述】:

我正在处理一个项目,该项目涉及从我的网络服务器流式传输 .OGG(或 .mp3)文件。我宁愿不必下载整个文件然后播放它,有没有办法在纯 Python 中做到这一点(没有 GStreamer - 希望让它真正跨平台)?有没有办法使用 urllib 一次下载文件块并将其加载到 PyGame 中以进行实际的音频播放?

谢谢!

【问题讨论】:

  • 我也有类似的情况。我正在尝试查看是否可以将音频文件转换为 base-64 块以通过网络发送以由客户端重新转换和播放
  • 听说GStreamer是跨平台的:en.wikipedia.org/wiki/GStreamer.

标签: python audio stream pygame playback


【解决方案1】:

我想您的服务器支持范围请求。您通过标题 Range 向服务器询问您想要的范围的起始字节和结束字节:

import urllib2

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

f.read()

您可以实现file object 并始终从服务器下载所需的文件块。几乎每个库都接受一个文件对象作为输入。

由于网络延迟,它可能会很慢。您需要下载更大的文件块,在单独的线程中预加载文件等。换句话说,您需要自己实现流式客户端逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多