加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用Python流式传输音频(无GStreamer)

发布时间:2020-12-20 13:26:24 所属栏目:Python 来源:网络整理
导读:我正在开发一个涉及从我的网络服务器传输.OGG(或.mp3)文件的项目.我不想下载整个文件然后播放它,有没有办法在纯 Python中做到这一点(没有GStreamer – 希望能让它真正跨平台)?有没有办法使用urllib一次下载文件块并将其加载到PyGame中以进行实际的音频播放
我正在开发一个涉及从我的网络服务器传输.OGG(或.mp3)文件的项目.我不想下载整个文件然后播放它,有没有办法在纯 Python中做到这一点(没有GStreamer – 希望能让它真正跨平台)?有没有办法使用urllib一次下载文件块并将其加载到PyGame中以进行实际的音频播放?

谢谢!

解决方法

我想你的服务器支持Range请求.您可以通过标题Range询问服务器,包括所需范围的起始字节和结束字节:

import urllib2

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

f.read()

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读