2012-02-02 3 views
4

Я работаю над проектом, который включает потоковое .OGG (или .mp3) файлы с моего веб-сервера. Я бы предпочел не загружать весь файл, а затем воспроизводить его, есть ли способ сделать это в чистом Python (без GStreamer - надеясь сделать его действительно перекрестной платформой)? Есть ли способ использовать urllib для загрузки фрагментов файлов за один раз и загрузить его, скажем, в PyGame для воспроизведения фактического звука?Потоковое аудио с использованием Python (без GStreamer)

Спасибо!

+0

Я в подобном углу. Я пытаюсь проверить, могу ли я преобразовать аудиофайл в базы-64 кусков, которые должны быть отправлены по сети, которую нужно переконфигурировать и воспроизвести клиентом. – Blazer

+1

Я слышал, что GStreamer является кросс-платформенным: http: // ru. wikipedia.org/wiki/GStreamer. – Tshepang

ответ

1

Я полагаю, что ваш сервер поддерживает Запросы диапазона. Вы спрашиваете, сервер заголовком Range с начального байта и конечного байта диапазона вы хотите:

import urllib2 

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

f.read() 

Вы можете реализовать file object и всегда скачать только необходимый фрагмент файла с сервера. Почти каждая библиотека принимает объект файла как входной.

Вероятно, это будет медленным из-за сетевой латентности. Вам нужно будет загружать большие фрагменты файла, предварительно загружать файл в отдельный поток и т. Д. Другими словами, вам нужно будет реализовать логику потокового клиента самостоятельно.

Смежные вопросы