Прерывание потока мультимедиа на сервере веб-сокетов HTML5 для приложения чата / видеоконференции на веб-основе
В настоящее время мы работаем над приложением для видеоконференций chat + (совместное использование файлов +) с использованием веб-сокетов HTML5. Чтобы сделать наше приложение более доступным, мы хотим реализовать Adaptive Streaming, используя следующую последовательность:
- Клиент необработанных аудио / видео данных отправляется на сервер
- Поток делится на 1 секунду
- Кодировать поток в различные полосы пропускания
- Клиент получает файл манифеста с описанием доступных сегментов
- Загружает один сегмент, используя обычный HTTP
- Пропускная способность следующего сегмента, выбранного по производительности предыдущего
- Клиент может выбирать из нескольких различных альтернативных потоков с различными скоростями передачи данных.
Итак... Как мы разделяем наши аудио / видео данные на куски с помощью Python?
Мы знаем, что Microsoft уже создала Expression Encoder 2, который обеспечивает адаптивную потоковую передачу, но поддерживает только Silverlight, а это не то, что нам нужно.
Редактировать:
Существует также решение под названием FFmpeg (а для Python - оболочка PyFFmpeg), но оно поддерживает только адаптивную потоковую передачу Apple.
2 ответа
Я думаю, что ffmpeg - это основной инструмент, на который вы захотите взглянуть. Это стало наиболее хорошо поддерживаемым медиа-манипулятором с открытым исходным кодом. Для этого есть оболочка Python. Хотя также возможно получить доступ к командной строке через модуль подпроцесса.
Я нашел несколько хороших статей о том, как другие люди строят stream segmenter
для других платформ, так что теперь мы знаем, как построить одну на Python.