Как я конфигурил стрим-сервер FFmpeg + NGINX-RTMP
Моё видео, пошаговой установки nginx с модулем rtmp (RTMP Server)
Моё видео, автоматической установки стрим-сервер FFmpeg + NGINX-RTMP с платой захвата DeckLink + GPU Intel Arc + GPU NVidia
Скрипты, автоматической установки и конфигурирования:
0 скрипт пред-установки и конфигурирования ОС
1 скрипт установки репозиториев и драйверов для GPU
2 скрипт установки и конфигурирования FFmpeg
3 скрипт установки и конфигурирования служб samba (SMB v2.0/3.0) и rc.local
4 скрипт установки и конфигурирования NGINX
5 скрипт установки и конфигурирования служб для управления nginx в ОС
все эти скрипты в одном архиве, включая SDK-библиотеки платы Видео захвата Blackmagic DeckLink, для сборки FFmpeg с поддержкой этих плат захвата
Итак, теперь расшифруем это всё, что делают эти скрипты автоматической установки или установим всё пошагово, без них, ручками:
- первым делом подготовимся
1. разрешим суперпользователя root и перейдём на него:
$ sudo passwd root
$ su
обновим ОС
apt update && apt full-upgrade && apt autoremove && apt autoclean
перезагрузимся
reboot
подключим проприетарные репозитории
apt install -y software-properties-common
Обновим базу репозиториев
apt update
установим базовые пакеты в ОС
apt install -y mc net-tools openssh-server inxi wget p7zip-full yasm nasm nmap rtmpdump tclsh tcl git dkms dpkg-dev build-essential make cmake unzip libtool libc6 libc6-dev libnuma1 libnuma-dev g++ gcc gawk gzip curl gnupg2 ca-certificates lsb-release ubuntu-keyring autoconf automake
Установим пакеты и библиотеки, потребующиеся для сборки nginx и ffmpeg
apt install -y ffmpeg rtmpdump tclsh tcl wget git dkms dpkg-dev build-essential make cmake g++ gcc gawk gzip curl gnupg2 ca-certificates lsb-release ubuntu-keyring libssl-dev autoconf automake libxslt1-dev libgeoip-dev fcgiwrap libcgi-fast-perl libfcgi-perl libfcgi0ldbl libcgi-pm-perl libdata-dump-perl libdbd-mysql-perl libdbi-perl libdevel-symdump-perl libdpkg-perl perl perl-base perl-openssl-defaults libbsd-resource-perl libgetopt-argvfile-perl libhtml-template-perl libperl-dev libset-scalar-perl libtext-unidecode-perl libxml2 libxml2-dev libxslt1-dev libxslt1.1 libxml-libxml-perl libxml-namespacesupport-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl libyaml-syck-perl zlib1g-dev
И начнём мы от обратного, т.е. с NGINX с модулями RTMP и DAV (оно-же скрипты установки №№ 0, 4 и 5)
добавим пользователя nginx
useradd --no-create-home --shell /bin/false nginx
добавим его в группу www-data
usermod -a -G www-data nginx
проверим
id -Gn nginx
перезагрузимся, чтоб установленные пакеты вступили в силу
reboot
создадим каталоги
mkdir /usr/local/src/nginx /usr/local/nginx /var/cache/nginx /var/log/nginx /tmp/hls
зададим им права
chown nginx:nginx /var/cache/nginx /var/log/nginx /tmp/hls /usr/local/nginx
chmod 750 -R /usr/local/nginx
chmod 777 -R /tmp/hls
переходим в каталог для исходников
cd /usr/local/src/nginx/
скачиваем исходник nginx
wget https://nginx.org/download/nginx-1.30.4.tar.gz
распаковываем в текущий каталог
tar -xvf nginx-1.30.4.tar.gz
поправим права на распакованных архив
chown root:root -R /usr/local/src/nginx/nginx-1.30.4
переходим в него
cd /usr/local/src/nginx/nginx-1.30.4
скачиваем модули rtmp и dav
git clone https://github.com/arut/nginx-rtmp-module
git clone https://github.com/arut/nginx-dav-ext-module
сделаем бэкап скаченных исходников
tar -czf /usr/local/src/nginx/nginx-1.30.4_orig.tar.gz /usr/local/src/nginx/nginx-1.30.4
Сконфигурируем nginx с модулями
./configure --sbin-path=/usr/sbin/nginx --add-module=/usr/local/src/nginx/nginx-1.30.4/nginx-rtmp-module --add-module=/usr/local/src/nginx/nginx-1.30.4/nginx-dav-ext-module --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_v3_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-http_geoip_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=3 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'
собираем
make
Устанавливаем
make install
перепровем права
chown nginx:nginx -R /var/cache/nginx /var/log/nginx /tmp/hls /usr/local/nginx /usr/local/nginx/conf /usr/local/nginx/html
chmod 750 /usr/local/nginx /usr/local/nginx/conf /usr/local/nginx/html
chmod 777 -R /tmp/hls
скопируем скомпилированный файл nginx поближе :))
cp /usr/sbin/nginx /usr/local/nginx/
так, nginx готов, теперь для него нужно создать службы в ОС, для управления им
создадим RAM-DISK для временных файлов nginx по пути /tmp/hls, прописав это монтирование в /etc/fstab
echo 'tmpfs /tmp/hls tmpfs rw,nosuid,nodev,relatime,size=4194304k,mode=777 0 0' >> /etc/fstab
примениться после перезагрузки.
далее отредактируем файл конфигурации nginx
nano /usr/local/nginx/conf/nginx.conf
далее создадим файл сервиса nginx
nano /lib/systemd/system/nginx.service
далее создадим файл /etc/default/nginx
nano /etc/default/nginx
далее создадим файл /etc/init.d/nginx
nano /etc/init.d/nginx
сделаем его исполняемым
chmod 755 /etc/init.d/nginx
далее создадим файл ротации логов /etc/logrotate.d/nginx
nano /etc/logrotate.d/nginx
далее создадим символьные ссылки запуска и остановки службы nginx
cd /etc/rc0.d
ln -s ../init.d/nginx K01nginx
cd /etc/rc1.d
ln -s ../init.d/nginx K01nginx
cd /etc/rc2.d
ln -s ../init.d/nginx S01nginx
cd /etc/rc3.d
ln -s ../init.d/nginx S01nginx
cd /etc/rc4.d
ln -s ../init.d/nginx S01nginx
cd /etc/rc5.d
ln -s ../init.d/nginx S01nginx
cd /etc/rc6.d
ln -s ../init.d/nginx K01nginx
разрешим/включим сервис nginx
systemctl enable nginx
запускаем nginx
systemctl start nginx
посмотрим его статус
systemctl status nginx
Всё, nginx полностью готов и уже работает.
теперь переходим на сборку кастомного FFmpeg и установку дров для NVidia, Intel, DeckLink (скрипты установки №№ 0, 1 и 2)
Перейти в раздел Линукс
Перейти в раздел Домой