Потоковое аудио с использованием Python (без GStreamer) - PullRequest
4 голосов
/ 02 февраля 2012

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

Спасибо!

1 Ответ

1 голос
/ 06 марта 2012

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

import urllib2

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

f.read()

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

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

...