【发布时间】:2018-02-01 04:49:31
【问题描述】:
现在我有了这些库:requests、pyglet、pyaudio
如何使用来自this 站点的音频流而不将其保存到文件中(使用缓冲)?
在这个库的文档中有一个关于 StreamingSource 类的令人困惑的信息
当我在 StreamingSource 对象(source.get_audio_data(DATA)) 中以字节为单位推送信息时,然后我将这个信息推送到 Player(pyglet.media.Player()) 中,它会引发异常,即 StreamingSource没有属性持续时间
代码:
import pyglet, requests
req = requests.get('http://ic7.101.ru:8000/c15_3', stream=True)
player = pyglet.media.Player()
source = pyglet.media.StreamingSource()
CHUNK = 1024
for num, chunk in enumerate(req.iter_content(CHUNK)):
if num == 1000:
break
source.get_audio_data(chunk)
if num == 100:
player.queue(source)
player.play()
pyglet.app.run()
pyglet.clock.schedule_once(lambda dt: pyglet.app.exit(), source.duration)
追溯:
Traceback (most recent call last):
File "/home/user/.PyCharmCE2017.1/config/scratches/scratch.py", line 16, in <module>
player.queue(source)
File "/usr/local/lib/python3.5/dist-packages/pyglet/media/__init__.py", line 978, in queue
group.queue(source)
File "/usr/local/lib/python3.5/dist-packages/pyglet/media/__init__.py", line 698, in queue
self.duration += source.duration
TypeError: unsupported operand type(s) for +=: 'float' and 'NoneType'
【问题讨论】:
-
您绝对需要 pyglet 还是对其他库开放?
-
@Anil_M,我想知道它是如何工作的..
-
检查我的答案。解决方案基于
python-vlc库。 -
@MrMorgan 我很好奇,你问过一个 pyglet 解决方案,但你已经验证了一个基于 python-vlc 的解决方案?为何如此? ://
-
@BPL,请检查我的问题的标题)
标签: python-3.x audio-streaming pyglet