【问题标题】:How can I play audio stream without saving it into the file with pyglet?如何在不使用 pyglet 将其保存到文件中的情况下播放音频流?
【发布时间】:2018-02-01 04:49:31
【问题描述】:

现在我有了这些库:requestspygletpyaudio

如何使用来自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


【解决方案1】:

如果您只想从 url 播放文件(音频/视频)而不保存,您可以使用vlc,如下所示。
vlc的详细信息是here

您可以将vlc(在windows上)安装为

pip install python-vlc

源代码

import vlc

url = 'http://ic7.101.ru:8000/c15_3'
#define VLC instance
instance = vlc.Instance('--input-repeat=-1', '--fullscreen')

#Define VLC player
player=instance.media_player_new()

#Define VLC media
media=instance.media_new(url)

#Set player media
player.set_media(media)

#Play the media
player.play()

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 2021-09-08
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2018-10-25
    • 2021-11-22
    相关资源
    最近更新 更多