Цель этого вопроса - выяснить, как играть потоковое аудио с помощью пиглета. Во-первых, просто убедитесь, что вы можете воспроизводить mp3 файлы с помощью pyglet, чтобы цель этого первого фрагмента:
import sys
import inspect
import requests
import pyglet
from pyglet.media import *
pyglet.lib.load_library('avbin')
pyglet.have_avbin = True
def url_to_filename(url):
return url.split('/')[-1]
def download_file(url, filename=None):
filename = filename or url_to_filename(url)
with open(filename, "wb") as f:
print("Downloading %s" % filename)
response = requests.get(url, stream=True)
total_length = response.headers.get('content-length')
if total_length is None:
f.write(response.content)
else:
dl = 0
total_length = int(total_length)
for data in response.iter_content(chunk_size=4096):
dl += len(data)
f.write(data)
done = int(50 * dl / total_length)
sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50 - done)))
sys.stdout.flush()
url = "https://freemusicarchive.org/file/music/ccCommunity/DASK/Abiogenesis/DASK_-_08_-_Protocell.mp3"
filename = "mcve.mp3"
download_file(url, filename)
music = pyglet.media.load(filename)
music.play()
pyglet.app.run()
Если вы pip install pyglet requests
пиплеты для библиотек, а также установили AVBin, вы сможете прослушивать mp3 после его загрузки.
Как только мы достигли этого момента, я хотел бы выяснить, как играть и буферизировать файл аналогично тому, как это происходит с существующими веб-видео/аудиоплеерами, используя пиглеты + запросы. Это означает, что вы играете файлы, не дожидаясь загрузки файла полностью.
После прочтения документов пиглетного носителя вы можете увидеть, что доступны следующие классы:
media
sources
base
AudioData
AudioFormat
Source
SourceGroup
SourceInfo
StaticSource
StreamingSource
VideoFormat
player
Player
PlayerGroup
Я видел, что есть другие похожие вопросы SO, но они не были решены должным образом, и их контент не предоставляет много актуальных деталей:
- Воспроизведение потокового аудио с помощью пиглета
- Как я могу воспроизводить аудиопоток без сохранения его в файл с помощью пиглета?
Вот почему я создал новый вопрос. Как вы играете в потоковое аудио, используя pyglet? Не могли бы вы привести небольшой пример использования вышеупомянутого mcve в качестве базы?