opened image

Как запустить круглосуточную трансляцию 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 установлен, будет следующий результат как на рисунку ниже.

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




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

 

 

screen


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

python /root/YouTube/YouTube.py


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

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

Если требуется остановить работу скрипта или проверить его работу, нужно в консоли сервера прописать следующую команду

 

 

screen -r


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