Источник

В этой статье я бы хотел рассмотреть такую вещь, как стриминг с использованием VDS-сервера. Несмотря на то, что это (мягко говоря) не самый популярный вопрос в нашей поддержке, мне доводилось несколько раз сталкиваться с ним. И буквально на днях, вновь решая эту задачу, в голову пришла мысль рассказать про неё и показать вариант, который в итоге подошёл нашему клиенту.

В этом примере мы будем использовать ПО Restreamer, и через протокол RTMP настроим передачу трансляции на VDS-сервер, а затем на стриминговую платформу. Благодаря открытому исходному коду, Restreamer можно бесплатно установить и настроить на VDS-сервере. Главным преимуществом стриминга через VDS является то, что основная нагрузка по обработке транслируемого видео будет ложиться именно на сервер, тем самым разгружая ваш ПК. Также с помощью этого метода нам будет доступна возможность многократного вещания одного видеопотока на различные платформы и сервисы одновременно.

▍ Создание VDS-сервера


Для начала нам необходимо создать сам VDS-сервер. Переходим на главную страницу нашего сайта, регистрируемся, и после авторизации жмём кнопку «Заказать».


Теперь нам необходимо выбрать конфигурацию для сервера. Так как для работы нам потребуется Docker, рекомендуем использовать конфигурацию не менее 4 CPU и 4 RAM. Выбираем необходимую конфигурацию, операционную систему (в данном примере будет использоваться ubuntu 20.04) и дата-центр и жмём кнопку «Заказать» (при заказе вы можете воспользоваться нашим промокодом HABR15 и получить дополнительную скидку 15%).


Дожидаемся завершения установки сервера и переходим во вкладку «Мои серверы». Тут можно посмотреть параметры сервера, а также данные для подключения к нему.


▍ Настройка VDS-сервера


В первую очередь нам необходимо подключиться к серверу по протоколу SSH через встроенный в ОС терминал, или с помощью специализированных SSH-клиентов (например, PuTTY). Открываем терминал и вводим следующую команду:

ssh root@ip_вашего сервера

Затем вводим пароль (при подключении через SSH по соображениям безопасности символы пароля не отображаются). Теперь можно приступить к настройке сервера. Для начала нам необходимо обновить и установить необходимые пакеты на сервере. Выполним следующие команды:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release


Далее устанавливаем Docker:

sudo apt install docker.io

И после завершения установки выполняем команду для запуска:

docker run -d --restart=always --name restreamer -v /opt/restreamer/config:/core/config -v /opt/restreamer/data:/core/data -p 8080:8080 -p 8181:8181 -p 1935:1935 datarhei/restreamer:latest

Готово. Установку необходимого нам ПО для стриминга мы завершили, и теперь можно приступить к настройке.

▍ Настройка Restreamer


Открываем любой браузер и в адресную строку вводим команду:

IP_вашего_сервера:8080/ui

В первую очередь нам необходимо создать пользователя. Регистрируемся, указав имя пользователя и пароль (можно указать любые данные на своё усмотрение).


После авторизации нас встречает окно с приветствием. Жмём на кнопку «Настройка видео».


На следующем этапе выбираем «RTMP-сервер».


Далее жмём «Включить RTMP-сервер».


В открывшемся меню настроек переходим на вкладку «RTMP» и выбираем пункт «RTMP-сервер». В поле «Порт RTMP» оставляем «1935», а в поле «Приложение» указываем любое название сервера (в моём случае это ruvds). Жмём «Сохранить».


Перезагружаем сервис, нажав на кнопку «Перезагрузить».


После перезагрузки нам необходимо вернуться в самое начало, вновь выбрать «Настройка видео» и «RTMP-сервер».


Теперь при выборе этого пункта у нас откроется окно со ссылкой, по которой наше ПО для захвата видео с ПК будет отправлять поток на VDS-сервер. Копируем данную ссылку.


▍ Настройка трансляции


Теперь нам необходимо настроить саму программу для захвата видео. В моём случае это будет программа OBS. Полностью настройку показывать не буду, так как для каждого пользователя она будет индивидуальной, а покажу лишь основные моменты для запуска трансляции. Запускаем OBS и переходим в меню «Настройки».


В меню с настройками переходим на вкладку «Трансляция». Здесь нам и пригодится ранее скопированная ссылка на трансляцию. В поле «Сервис» выбираем «Настраиваемый». В поле «Сервер» вставляем часть скопированной ссылки (до названия сервера, которое ранее указывали при настройке RTMP-сервера включительно). В поле «Ключ потока» вставляем оставшуюся часть ссылки. Жмём кнопку «Ок», тем самым сохраняя настройки.


И жмём кнопку «Начать трансляцию».


▍ Запуск трансляции


На прошлом шаге мы успешно запустили трансляцию через OBS, но пока что она отправляется лишь на наш сервер, в Restreamer. Теперь можно приступить к последнему шагу: настройке ретрансляции на популярные стриминговые платформы (Twitch, YouTube и др.). Вновь возвращаемся к браузеру и открываем вкладку с настройкой видео, откуда мы копировали ссылку. Жмём «Далее».


Проходим несколько этапов настройки, выбирая параметры под себя (разрешение, настройка звука, настройка метаданных, авторских прав) и жмём «Сохранить».


После сохранения настроек у нас откроется окно с информацией о нашем стриме. Здесь мы можем посмотреть, как наша трансляция будет отображаться на остальных площадках, и при необходимости внести те или иные изменения. В этом примере я запущу трансляцию на YouTube. В правом верхнем углу, в разделе «Публикации» жмём на «+».


В открывшемся окне выбираем платформу, на которую будет ретранслироваться изображение с нашего ПК (в текущем примере это YouTube).


Далее во вкладке «Общее» указываем имя, которое будет отображаться в списке публикаций, режим доставки «RTMP» и «Ключ потока». Получить ключ потока можно в настройках на самой площадке для стриминга. Жмём кнопку «GET», и нас перенаправит на страницу, где можно скопировать данный ключ.


В случае с YouTube ключ находится на странице «Studio».


Копируем и вставляем этот ключ в поле «ключ потока» и жмём кнопку «Сохранить». Теперь в разделе «Публикации» отобразилась необходимая нам платформа, и мы можем запустить ретрансляцию на неё.


Готово. Ретрансляция успешно запущена и, перейдя на YouTube, можно просмотреть её.


▍ Пара слов в заключение


Как мы смогли увидеть, в настройке VDS-сервера под стриминг нет ничего сложного, и делается это даже проще, чем дальнейшая настройка трансляции конкретно под себя. Данное решение отлично подойдёт для слабых ПК, так как вся обработка видео происходит на отдельных мощностях VDS-сервера, тем самым разгружая ПК, с которого происходит трансляция, а использование Restreamer позволит удобно и просто управлять настройками трансляции.

Выиграй телескоп и другие призы в космическом квизе от RUVDS. Поехали? ????

Комментарии (12)


  1. dlinyj
    18.07.2023 10:07
    +1

    Единственное, что не понял, для чего промежуточный сервер для трансляции на youtube? OBS может транслировать сразу напрямую.
    Работает бесплатно, без регистрации и смс.


    1. SHOROOP
      18.07.2023 10:07

      Стримить в несколько площадок одновременно, например. Для obs есть плагин мультистриминга, но когда я его последний раз тыкал - он проц съел в потолок, плюс канал забивается во столько раз больше, в сколько точек стримить нужно (один целевой сервис - один поток, логично). Есть сторонние ресурсы, но они не всегда бесплатные и точно не self-hosted :)

      А с рестримером удобно, на том же obs поток льёшь в одну точку, а Restreamer уже сам по остальным разливает.


    1. oldadmin Автор
      18.07.2023 10:07

      При трансляции через RTMP на VDS сервере обработка видео происходит на самом сервере, что снимает нагрузку с вашего компьютера.

      Плюс да, с ОБС тоже можно стримить сразу на несколько платформ, но только с помощью сторонних сервисов или плагинов.


      1. TheRaven
        18.07.2023 10:07
        +1

        Какая обработка-то? OBS льёт в рестример, рестример льёт тот же поток в ютуб.
        Тут ни конвертации, ни переупаковки не происходит. Там на VDS-ке проц должен в нулях лежать.


        1. NutsUnderline
          18.07.2023 10:07

          Как то один друг пытался сделать рестрим на старом ноуте и ооочень удивлся когда он лег от непосильной нагрузки


      1. dlinyj
        18.07.2023 10:07
        +1

        При трансляции через RTMP на VDS сервере обработка видео происходит на самом сервере, что снимает нагрузку с вашего компьютера.

        Чтобы видео было передано на сервер, оно должно быть сжато, то есть в любом случае идёт пережим видео на моей стороне. Так что этот пункт не актуальный.


        Плюс да, с ОБС тоже можно стримить сразу на несколько платформ, но только с помощью сторонних сервисов или плагинов.

        Это конечно довод, но не стоит того чтобы для этих целей покупать отдельный сервер.


        1. oldadmin Автор
          18.07.2023 10:07

          В этой серии статей у нас всегда один контрдовод - стоимость сервера не учитывается, потому что это многоцелевая покупка, которую можно использовать не только для одной цели :)


          1. semen-pro
            18.07.2023 10:07
            +1

            если брать сервер с посекундной тарификацией - вполне приемлемо


        1. NutsUnderline
          18.07.2023 10:07

          Не совсем. Можно даже локально сервер разместить если есть подходящий канал. Но давайте представим что траснляция идет через слабый мобильный канал, adsl - тут даже P2P не очень помогает. Нужно иметь посредник на хорошем канале, особенно чтобы разветвить поток на несколько площадок.


  1. naim
    18.07.2023 10:07
    +1

    А это разве не лучше Peertube https://www.opennet.ru/opennews/art.shtml?num=59329


    1. NutsUnderline
      18.07.2023 10:07

      ну вот будет Undefined - там они хотят через этот сервис вещать. Но есть две проблемы. Во первых все равно этот сревис должен сидеть на каком то сервере, вполне себе VPS. Во вторых если куча зрителей со слабыми каналами то они не только не помогут, а возможно даже ухудшат весь этот P2P


  1. NutsUnderline
    18.07.2023 10:07

    При наличии сервера с мощным каналом логично на нем же разместить web страничку с плеером трансляции.. Не будет зависимости от причуд платформ. Но при большом числе зрителей это будет СМИ со всеми вытекающими.