Мы получили патент на изобретение в области стриминга.
Наши специалисты разработали систему отказоустойчивого транскодирования и выдачи прямых потоков в формате HLS. Новая технология улучшает стабильность транскодинга и позволит доставлять видео для 1 000 000 и более зрителей с большей гарантией.
Рассказываем, как разработка поможет нашим клиентам улучшить качество стриминга.
Система отказоустойчивого транскодирования и выдачи потоков — это кластер серверов транскодирования под управлением балансировщика нагрузки. Кластер получает исходный видеопоток на входе, а на выходе отдаёт транскодированные адаптивные файлы, доступные по HTTP, то есть в HLS или, как альтернативный вариант, в MPEG-DASH.
Основные элементы системы:
Ключевая особенность такой системы транскодирования — отсутствие централизованного хранилища адаптивных файлов. Мы распределяем элементы в процессе стриминга и за счёт этого:
Отсутствие централизованного хранилища может создать дополнительные трудности (такие, как проблема согласованности данных при изменении сервера транскодирования). Но наши разработчики предусмотрели все нюансы и решили все проблемы.
Сначала балансировщик формирует параметры, на их основе выбирает самый подходящий сервер из кластера и отправляет ему команду через сервер обмена сообщениями на основе Redis.
Сервер получает команду и исходный поток в формате RTMP (или любом другом, который подходит для передачи видео).
Сервер транскодирует видео в HLS. Поток представляется в виде файлов двух типов:
Каждый чанк имеет своё уникальное имя, привязанное к времени транскодирования. Это нужно на случай, если сессия транскодирования будет перезапускаться на разных серверах (например, при перераспределении нагрузки или в случае сбоя сервера). Уникальные имена исключают вероятность пересечения разных файлов и решают проблему согласованности данных.
Имя файла чанк-листа при этом должно быть одинаковым на всех серверах. И чтобы избежать создания нескольких неактуальных файлов, они хранятся отдельно от чанков. При этом папка с ними всё время синхронизируется между серверами, и на каждом сервере всегда есть актуальный чанк-лист.
Чанк-листы — файлы небольшого размера, поэтому постоянная синхронизация между серверами не создаёт большую нагрузку на сеть и не приводит к увеличению задержек.
Так как у всех серверов есть актуальный чанк-лист, при смене сервера транскодирования уже готовые чанки не будут кодироваться заново. Все перекодированные кусочки останутся в чанк-листе и будут скачиваться с предыдущего сервера.
После транскодирования поток передаётся в сеть доставки контента и отправляется пользователям.
Для CDN в качестве источника контента указываются все серверы кластера транскодирования.
Как мы сказали, при смене сервера транскодирования чанки не перекодируются заново. Загрузка нужных фрагментов идёт с предыдущего сервера. Но что, если этот предыдущий сервер вышел из строя и все транскодированные фрагменты остались недоступны? Тогда зритель не сможет перемотать видео назад.
Эту проблему мы решаем двумя способами.
Способ №1. Кеширование готовых чанков на промежуточном сервере между CDN и системой транскодирования. В EdgeЦентр CDN роль такого сервера играет шилдинг источника. Все фрагменты будут принудительно сохраняться в кеше шилдинга и останутся доступны, если случится сбой.
Способ №2. Создание пары серверов в рамках кластера, которые будут обмениваться готовыми чанками. Это немного увеличит нагрузку на них. Но если это будет всего два сервера, нагрузка не вырастет сильно, а мы обеспечим отказоустойчивость.
Наши клиенты сами могут решить, какой способ выбрать. Единственный нюанс: шилдинг источника — это дополнительная платная опция. Но если вы организовываете трансляции на большую аудиторию, расходы будут полностью оправданны, ведь шилдинг ещё и защищает систему от экстремальных нагрузок.
Мы уже внедрили разработку в нашу стриминговую платформу. Она доступна по умолчанию для всех клиентов.
Наша платформа использует передовые технологии в области передачи видео. С ней вы сможете без проблем доставлять трансляции 1 000 000+ зрителей на любые устройства в качестве до 8K с минимальными задержками и без буферизации.
Сделайте ваше видео доступным в высоком качестве на любых устройствах с помощью нашей стриминговой платформы.