Трансляция видео живого или по требованию на страницах интернета становится массовым явление и способов организовать такую трансляцию накопилось уже большое количество. На страницах Хабра имеется пару интересных статей как это можно сделать
тут тут и
здесь.
Но к вопросу о создании масштабируемых систем трансляции материалов практически нет. Данная статья расскажет как кэшировать видео и раздавать на большое количество пользователей.
Чаще всего видео трансляции организована по следующей схеме:
источник – перекодировщик – сервер трансляций — проигрыватель
- Источник – обычная веб камера.
- Перекодировщик – Adobe Flash Media Live Encoder 3.2
- Cервер трансляций – Wowza Media Server 3.5.2
- Поигрывает – Strobe
Такая схема работает и достаточно популярна. Основная проблема, которая встречается при использовании – прожорливость Wowza к памяти и использованию процессора. Организовать трансляцию в 1000 потоков на одном, даже мощном сервере, часто не получится из-за нехватки ресурсов.
В качестве решения такой проблемы предлагается использовать прокси-сервер с кэшированием.
Пользователь грузит страничку с интегрированным флеш видео плеером (Strobe)
Плеер забирает видео поток по протоколу HTTP Dynamic Streaming (HDS) по 9000 порту
Nginx отдает из кеша кусочки потока по HTTP. При отсутствии файлов в кеше забирает кусочки потока от Wowza Media Server по порту 1935
Что будет использоваться в качестве источника видео сигнала, не существенно, такая конструкция будет работать и для Live, и для VOD, и для nDVR потоков.
Как настроить такую схему – пожалуйста под кат