Вирішив погратися з трансляцією відео через власний сервер. Серед наявних рішень я спочатку розглядав можливість встановлення додаткового програмного забезпечення на кшталт Owncast та rtsp-simple-server, але в результаті вирішив просто довстановити модуль rtmp до nginx. До того ж, мені не потрібен вебінтерфейс для переглядання трансляції.
Отже, передусім встановлюємо пакети nginx-full та модуль rtmp:
root@vps-00001:~# apt-get install nginx-full libnginx-mod-rtmp
...
Наступним кроком відкриваємо у своєму улюбленому текстовому редакторі файл /etc/nginx/nginx.conf
та додаємо туди конфігурацію двох примітивних віртуальних веб серверів для перевірки авторизації, а також додаємо налаштування RTMP серверу:
|
|
Зверніть увагу на рядки 78 та 88, замість publishonlySECRETpassword
та watchonlySECRETpassword
ви повинні вказати свої паролі. Рекомендую згенерувати нові з допомогою random.org/passwords.
Далі перевіряємо, що файл налаштувань nginx не містить помилок:
root@vps-00001:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
І якщо все гаразд, даємо nginx команду перечитати налаштування:
root@vps-00001:~# service nginx reload
На цьому з налаштуванням nginx завершено, настав час перевірити чи все працює. Візьмемо для прикладу якийсь файл з відео та за допомогою ffmpeg
розпочнемо трансляцію на сервер:
$ ffmpeg -re -i ~/Videos/AntiTrust.avi \
-vcodec libx264 -preset fast -crf 30 \
-acodec aac -ab 128k -ar 44100 -strict experimental \
-f flv rtmp://142.250.201.206/stream/test?access_token=publishonlySECRETpassword
Зверніть увагу на те, що замість ip адреси 142.250.201.206
ви повинні вказати адрес свого серверу і свій новий згенерований пароль. До речі, у прикладі вище в посиланні вказана назва трансляції test, тобто ви можете запускати безліч трансляцій з різними назвами.
Отже, якщо ffmpeg
не видав помилки, переходимо до завершальної частини - перевірки трансляції. Відкриваємо посилання на трансляцію з відповідним паролем, наприклад, в плеєрі vlc та перевіряємо чи є картинка та звук:
$ vlc rtmp://142.250.201.206/stream/test?access_token=watchonlySECRETpassword
Можна також одночасно транслювати відео з вебкамери та переглядати зі звуком локально. Це може бути корисним, коли ви, наприклад, захочете транслювати музику зі свого вінілового програвача:
$ ffmpeg -re -f v4l2 -i /dev/video0 \
-f alsa -i default -acodec libmp3lame \
-map 0 -c:v libx264 -preset ultrafast -crf 23 \
-map 1:0 -c:a aac \
-f tee "[f=flv]rtmp://142.250.201.206/stream/test?access_token=publishonlySECRETpassword|[f=nut]pipe:" \
| ffplay -
Але замість alsa -i default потрібно буде вказати який самий вхідний канал використовувати для вхідного звукового потоку.