Прерывание потока мультимедиа на сервере веб-сокетов HTML5 для приложения чата / видеоконференции на веб-основе

В настоящее время мы работаем над приложением для видеоконференций chat + (совместное использование файлов +) с использованием веб-сокетов HTML5. Чтобы сделать наше приложение более доступным, мы хотим реализовать Adaptive Streaming, используя следующую последовательность:

  1. Клиент необработанных аудио / видео данных отправляется на сервер
  2. Поток делится на 1 секунду
  3. Кодировать поток в различные полосы пропускания
  4. Клиент получает файл манифеста с описанием доступных сегментов
  5. Загружает один сегмент, используя обычный HTTP
  6. Пропускная способность следующего сегмента, выбранного по производительности предыдущего
  7. Клиент может выбирать из нескольких различных альтернативных потоков с различными скоростями передачи данных.

Итак... Как мы разделяем наши аудио / видео данные на куски с помощью Python?

Мы знаем, что Microsoft уже создала Expression Encoder 2, который обеспечивает адаптивную потоковую передачу, но поддерживает только Silverlight, а это не то, что нам нужно.

Редактировать:
Существует также решение под названием FFmpeg (а для Python - оболочка PyFFmpeg), но оно поддерживает только адаптивную потоковую передачу Apple.

2 ответа

Решение

Я думаю, что ffmpeg - это основной инструмент, на который вы захотите взглянуть. Это стало наиболее хорошо поддерживаемым медиа-манипулятором с открытым исходным кодом. Для этого есть оболочка Python. Хотя также возможно получить доступ к командной строке через модуль подпроцесса.

Я нашел несколько хороших статей о том, как другие люди строят stream segmenter для других платформ, так что теперь мы знаем, как построить одну на Python.

Другие вопросы по тегам