Как запустить круглосуточную трансляцию YouTube на linux

Как можно легко запустить круглосуточную трансляцию YouTube на linux транслируя свои видео? Почему linux? Почему нельзя просто установить OBS studio и с помощью неё запускать трансляцию? Одна з причин, это то, что при работе OBS studio требуется больше мощностей для запуска и трансляции, при этом, стабильной и плавной прямой трансляции может и не быть. Если получится запустить, то не на само слабом сервер и при этом, FPS может быть не более 20 кадров/с. По этом нам потребуется сервер с OS Linux.

Что потребуется: Сервер с системой Linux. Сегодня рассмотрим установку на сервере с ОС CentOS 7.Также установленный python. В большинство современных образов, python 2 установлен в систему из коробки.

Установка:

1. Подключаемся к серверу по SSH.

2. Устанавливаем дополнительно ПО для запуска трансляции. Для этого подключаем дополнительный репозиторий чтобы можно установить ПО для работы трансляции. Для этого пропишем следующую команду в консоли

yum install epel-release -y yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm -y

3. Производим установку ffmpeg. Для установки пишем в консоли команду:

yum install ffmpeg ffmpeg-devel -y

4. Чтобы проверить, установился ли ffmpeg, пишем команду

ffmpeg -version

Если ffmpeg установлен, будет следующий результат как на рисунке ниже.

Как запустить круглосуточную трансляцию YouTube на linux

5. После установки ffmpeg создаём директорию в которой у нас будут храниться видео. В нашем случаю директория которая будет хранить видео, имеет расположение /root/YouTube/video. Чтобы создать данную директорию, напишем следующую команду:

mkdir -p /root/YouTube/video

После того как директория была создана, загружаем видео с расширением mp4 в данную директорию. После загрузки видео в указанную директорию, можем приступить к следящему действию.

6. Следующим шагом будет создания и редактирование файла/скрипта, который будет отвечать за работу прямой трансляции на YouTube. Напишем команду

vim /root/YouTube/YouTube.py

После написаний откроется файл YouTube.py в который нужно написать следующий код:

import os dirname = "/root/YouTube/video/" key = 'rtmp://a.rtmp.youtube.com/live2/0xx0-xxxx-x000-x0x0-xxxx' while True: files = os.listdir(dirname) for f in files: if ".mp4" in f: cmd = "ffmpeg -threads 3 -re -i " + dirname + f + " -c:v libx264 -preset ultrafast -crf 24 -g 3 -f flv " + key os.system(cmd)

Параметр dirname имеет путь к директории с видео, который будут транслироваться в прямой трансляции. Если нужно установить свою директорию, в которой находятся видео, замените "/root/YouTube/video/" на свой полный путь.

Чтобы установить свой ключ трансляции, меняете "rtmp://a.rtmp.youtube.com/live2/0xx0-xxxx-x000-x0x0-xxxx" на значение своего ключа.

Параметры:

-threads - количество потоков, которые может обрабатывать ffmpeg-preset - насколько сильно будет нагружен CPU

Есть следующие параметры:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium
  • slow
  • slower
  • veryslow

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

-crf - коэффициент, который отвечает за качество картинки. По умолчанию установлен 23. Данный коэффициент может иметь значения от 0 до 51. Чем значение больше, тем качество лучше. Значение 0 - качество равно качеству самого видео. Значение 51 - самое хуже качество.

-g - коэффициент, который указывает явное количество ключевых кадров.

-re - указывает, что файл необходимо конвертировать в поток.

-i - указывает, что файл нужно воспроизвести.

-f - указывает, в какой формат должен быть конвертирован файл. Для YouTube нужен формат "flv"

Если все нужные настройки были завершены, можно приступить к запуску скрипта.

7. Чтобы запустить скрипт в фоновом режиме, нужно установить дополнительный пакет screen. Для этого прописывает следующую команду:

yum install screen -y
Как запустить круглосуточную трансляцию YouTube на linux

После установки данного пакета переходим в режим "скрина". Для этого прописываем следующую команду:

screen

После написания данной команды, Вам нужно запустить данный скрипт. Для этого прописываем следующее:

python /root/YouTube/YouTube.py

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

Как запустить круглосуточную трансляцию YouTube на linux

Чтобы отключится от сервера безопасно, при этом, оставить работать прямую трансляцию, требуется нажать на CTRL+A, после чего на клавишу D. Работа скрипта перейдёт в фоновый режим, а трансляцию продолжить свою работу. После этого можете отключиться от сервера. Или можно закрыть окно ssh-клиента - через кнопку закрытия окна (крестик), сессия не прервется. Если требуется остановить работу скрипта или проверить его работу, нужно в консоли сервера прописать следующую команду

screen -r

После ввода данной команды открыться наш скрипт. Остановить его можно используя комбинации клавиш CTRL+Z

1111
16 комментариев

Статья полезная, но не уверен, что ресурс правильный (хабр в другой вкладке)

2

Хабр параша. Его никто не читает на русском уже лет 5. Ток новости ещё +-. А тут и тема почти профильная для дтф.

3

интересно 👍🏼
а можно вместо пути к дериктории к видео указать локальный адрес потока? моя задумка стримить природу 24/7 (есть пара замечательных мест с дикими животными) используя при этом основную камеру смартфона по wifi.
как реализовать на win в принципе понятно, но это минус целый системник под это, что не очень. а вот с твоим мануалом вполне можно обойтись каким то одноплатничком под cent os.

Вы можете телефоном стримить с помощью https://play.google.com/store/apps/details?id=com.streamlabs Стимлабс. Что у вас там за задумки то как сделаете выложи мануал. Потоки можно прикручивать но для этого нужен софт, какой я хз.

3

Чтобы отключится от сервера безопаснотак а чего нормально демоном не запустить?

1

vim /root/YouTube/YouTube.pyАвтор статьи ебанутый

1

Instructions unclear

I'm stuck in vim