Облачная Потоковая Передача Webrtc На Digitalocean



Облачная потоковая передача WebRTC на DigitalOcean

Известный облачный хостинг DigitalOcean недавно обзавелся собственным магазином с готовыми образами, из которого можно быстро развернуть любой сервер приложений.

Так же как и AWS, только ДЕЛАТЬ, для тех, кто уже пользуется услугами этого провайдера.

Давайте посмотрим, как, имея аккаунт DO, можно развернуть простой сервер за $10 в месяц для потоковой передачи WebRTC на базе Flashphoner WebCallServer, и чем такой сервер может быть полезен.



Развертывание

Войдите в свой аккаунт на ДО, перейдите по ссылке на изображение.

Flashphoner WebCallServer и нажмите кнопку «Создать дроплет веб-сервера вызовов Flashphoner»

Облачная потоковая передача WebRTC на DigitalOcean

Выбираем характеристики севера и тарифный план.

По умолчанию ДО предложит нам что-то из среднего сегмента, но нас интересует минимальная стоимость.



Облачная потоковая передача WebRTC на DigitalOcean

Выберите регион, в котором расположен дата-центр, например Франкфурт.

Облачная потоковая передача WebRTC на DigitalOcean

Выберите метод аутентификации, например, одноразовый пароль.



Облачная потоковая передача WebRTC на DigitalOcean

Указываем количество серверов (на данный момент нас интересует один сервер) и даем нашему серверу имя.

Это имя будет записано, помимо прочего, в /etc/hostname. Нажмите «Создать дроплет»

Облачная потоковая передача WebRTC на DigitalOcean

После создания сервер автоматически запустится.

Вы можете подключиться к нему по SSH и, если в качестве метода аутентификации был выбран одноразовый пароль, сменить пароль.

В консоли отобразится краткое описание Flashphoner WebCallServer со ссылками на документацию.



Облачная потоковая передача WebRTC на DigitalOcean



«Это испытание.

Ты меня видишьЭ»

Flashphoner WebCallServer запускается полностью готовым к использованию, 30-дневная пробная лицензия активируется автоматически.

Есть веб-интерфейс для тестирования всех основных функций; мы ограничимся тестированием публикации и воспроизведения потока WebRTC. Откройте страницу в браузере https://droplet_ip:8444/admin/ .

По умолчанию сервер поставляется с самозаверяющим сертификатом, поэтому вам придется подтвердить исключение безопасности.

В дальнейшем вы сможете заменить сертификаты на свои.

Введите имя пользователя и пароль (по умолчанию демо )

Облачная потоковая передача WebRTC на DigitalOcean

Выберите пример двусторонней потоковой передачи на боковой панели, нажмите кнопку «Подключиться», затем «Опубликовать».

Для воспроизведения трансляции нажмите «Воспроизвести»

Облачная потоковая передача WebRTC на DigitalOcean



За пригоршню долларов

Что может сервер стоимостью 10 долларов в месяц в качестве аппаратной платформы для потоковой передачи WebRTC? Посмотрим, что нам предлагает DigitalOcean с точки зрения процессора
  
  
  
  
  
  
  
  
  
  
  
   

lscpu



Облачная потоковая передача WebRTC на DigitalOcean

и по памяти

free -h



Облачная потоковая передача WebRTC на DigitalOcean

Проверяя сервер нагрузочными тестами, мы видим, что сервер умеет довольно многое.

Например, опубликуем один экземпляр потока и посмотрим, сколько подписчиков смогут одновременно воспроизводить этот поток, занимая не более 90% процессора:

Разрешение Битрейт, кбит/с Количество публикаций Количество подписчиков
360p 1300 1 70
480p 1800 1 70
720p 3000 1 50
При нескольких одновременных публикациях максимальное количество обрабатываемых потоков остается на том же уровне: если опубликовать 7 потоков, на каждый смогут подписаться до 10 зрителей.

Допустим, нам нужно перекодировать поток на сервере, чтобы уменьшить разрешение или выровнять FPS. Для этого случая проверим максимальное количество публикаций:

Разрешение Битрейт, кбит/с Количество потоков
360p 1300 5
480p 1800 3
720p 3000 2
Таким образом, сервер минимальной стоимости на DO с параметрами 1 ядро ЦП, 2 Гб ОЗУ, 2 ТБ трафика в месяц подойдет не только для тестирования стриминга WebRTC, но и для использования в небольших проектах.

Например, вы можете:

  • раздавать поток с IP-камеры через WebRTC для простого внутрикорпоративного видеонаблюдения;
  • организовать вебинар для сотрудников небольшой компании
  • улучшите свое интернет-радио (аудиопоток требует меньше ресурсов процессора)
Кроме того, этот сервер можно рассматривать как эталонную платформу для масштабирования вычислений, чем мы и займемся дальше.



"Я заслуживаю лучшего!"

Правила, в общем-то, очень простые: ядер не может быть слишком много, как и памяти.

В зависимости от планируемого количества абонентов рекомендации из набора конфигураций, предлагаемых ДО, будут следующими:

Количество подписчиков виртуальные процессоры ОЗУ, ГБ Трафик, ТБ Пример использования
до 200 4 8 5 Система видеонаблюдения
до 500 8 16 6 Вебинары
до 1000 16 64 9 Видео-конференция
до 2000 20 96 10 Потоковое HD-видео
Если планируется дальнейший рост, вам придется развернуть CDN из расчета 1 Edge-сервер на 2000 подписчиков.

Допустим, нам нужно раздавать HD-видео, планируемое количество зрителей — 10 000. В этом случае нам понадобится 2 сервера Origin для публикации и 5 Edge-серверов для просмотра.



Облачная потоковая передача WebRTC на DigitalOcean

Пример настройки:

  • Происхождение 1


cdn_enabled=true cdn_ip=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin

  • Происхождение 2


cdn_enabled=true cdn_ip=origin2.flashponer.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin

  • Edge 1 - Edge 5 (здесь меняется только адрес сервера в параметре

    cdn_ip

    )


cdn_enabled=true cdn_ip=edge1.flashphoner.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge

CDN также может быть полезен, если подписчики распределены географически, например, наши потенциальные зрители живут в Европе и Америке.



Облачная потоковая передача WebRTC на DigitalOcean

Пример настройки:

  • Происхождение ЕС


cdn_enabled=true cdn_ip=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=EU

  • Происхождение США


cdn_enabled=true cdn_ip=origin_us.flashponer.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=US

  • Край 1 ЕС


cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU

  • Край 1 США


cdn_enabled=true cdn_ip=edge1_us.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=US

Чем больше зрителей, тем больше разнообразие устройств воспроизведения и каналов к этим устройствам.

Для обеспечения качества трансляции на различных устройствах, скорее всего, потребуется перекодирование видео, которое можно поручить специальным CDN-серверам Transcoder.

Облачная потоковая передача WebRTC на DigitalOcean

Пример настройки:

  • Источник


cdn_enabled=true cdn_ip=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=default

  • Транскодер ЕС


cdn_enabled=true cdn_ip=transcoder_eu.flashponer.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=transcoder cdn_groups=EU

  • Край 1 ЕС


cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU

Для транскодирования, как мы выяснили в ходе теста, важно количество ядер процессора.

Из линейки конфигураций, оптимизированных под CPU, наиболее подойдет самая дорогая 32 vCPU, 64 Gb RAM. В то же время в других линейках конфигурации с большим объемом памяти, аналогичные по количеству процессоров, могут оказаться существенно дороже.

К сожалению, на транскодерах сэкономить не получится: поскольку видео кодируется покадрово, памяти должно хватить для всех картинок, а процессоров — для обработки всех потоков.

При развертывании CDN будет полезно одновременно создать несколько серверов одной конфигурации.

Однако для географически распределенной CDN серверы Edge и Transcoder одного и того же типа должны быть расположены в разных центрах обработки данных.



Заключение

Итак, мы развернули и протестировали небольшой сервер для потоковой передачи WebRTC-видео с низкой задержкой на DigitalOcean, убедились, что сервер в минимальной конфигурации подходит не только для тестирования, но и для использования в небольших проектах, получили данные для масштабирования в зависимости от ожидаемое количество зрителей, а также затронули тему развертывания CDN, которая сама по себе заслуживает отдельной статьи.

Оставайтесь с нами, продолжение следует.

Ссылки

Flashphoner WebCallServer на торговой площадке DigitalOcean — готовый образ Web Call Server в DigitalOcean. CDN для потоковой передачи WebRTC с низкой задержкой — сеть доставки контента на базе Web Call Server. Теги: #разработка iOS #разработка Android #программирование #разработка веб-сайтов #cdn #стриминг #cloud #вебинары #webrtc #стриминг #видеонаблюдение #Edge #low-latency #ip camera #ip camera #origin #broadcasting #streaming video #hd video #видеочат #aws amazon #digitalocean #Droplet #Transcoder
Вместе с данным постом часто просматривают: