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