Прототип сервера Dash Streaming

Узнавая о прямых трансляциях, я нашел не так много исчерпывающей информации в Интернете. Эта область кажется очень проприетарной и коммерциализированной с множеством плохо описанных стандартов и протоколов. Но у меня есть план глубоко разобраться во внутренностях потокового вещания и реализовать прототип сервера. Настройка NGINX не является способом достижения этой цели, все внутренности скрыты внутри жуткой реализации C. Но что требуется в настоящее время для реализации собственного сервера потокового вещания через DASH/HLS?

Знаете ли вы какие-либо рекомендации по внедрению сервера потокового вещания DASH/HLS? (желательно на Go/Python). Если нет, можете ли вы кратко описать ключевые компоненты, лежащие в основе сервера прямой трансляции?


person Bogdan Ruzhitskiy    schedule 14.11.2019    source источник
comment
Вероятно, было бы полезно взглянуть на стример с открытым исходным кодом, чтобы получить некоторые идеи и посмотреть, как люди подошли к нему — например. https://gstreamer.freedesktop.orghttps://gstreamer.freedesktop.org. Также есть ссылки на документацию по API и документацию для разработчиков.   -  person Mick    schedule 14.11.2019


Ответы (1)


На самом деле для DASH или HLS сервер — это просто стандартный HTTP-сервер... не более того.

В этом вся цель DASH и HLS... повторно использовать существующую инфраструктуру на основе HTTP, чтобы не было необходимости в специализированных потоковых серверах. Кодер берет аудио/видео и записывает сегменты (обычно 4-8 секунд) и записывает их в виде отдельных файлов. Он также записывает манифест или список воспроизведения, который по сути представляет собой список URL-адресов для этих сегментов вместе с некоторыми метаданными, указывающими битрейт, кодек и прочее.

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

person Brad    schedule 14.11.2019
comment
Хороший ответ. Возможно, стоит добавить, что в большинстве развертываний любого размера на практике по-прежнему используются специализированные «исходные» серверы. Обычно одним из ключевых драйверов является наличие единственной копии исходного видео, которая затем повторно упаковывается в HLS или DASH как раз вовремя или «на лету», когда это требуется. На практике эти серверы также предоставляют дополнительные функции, такие как своевременное шифрование, синхронизированные метаданные, логика вставки рекламы и т. д. - person Mick; 18.11.2019