nginx-rtmp-module

конфигурирование (установка и настройка дистрибутивов GNU/Linux, программного обеспечения и др.)
Ответить
Аватара пользователя
Роман Торопов
Администратор
Сообщения: 147
Зарегистрирован: 24 мар 2008, 10:49
Откуда: г. Пермь
Контактная информация:

nginx-rtmp-module

Сообщение Роман Торопов » 29 май 2020, 09:09

Код: Выделить всё

su
apt update && apt full-upgrade && apt autoremove && apt autoclean
add-apt-repository -y ppa:graphics-drivers/ppa
add-apt-repository ppa:oibaf/graphics-drivers
apt-get install autoconf automake build-essential libass-dev libtool pkg-config texinfo zlib1g-dev libva-dev cmake mercurial libdrm-dev libvorbis-dev libogg-dev git libx11-dev libperl-dev libpciaccess-dev libpciaccess0 xorg-dev intel-gpu-tools opencl-headers libwayland-dev xutils-dev ocl-icd-* libssl-dev
add-apt-repository ppa:jonathonf/ffmpeg-4
apt install libpcre3 libpcre3-dev libssl-dev build-dep git wget ffmpeg libopus-dev libmp3lame-dev libfdk-aac-dev libvpx-dev libx264-dev yasm libass-dev libtheora-dev libvorbis-dev mercurial cmake
cd /usr/local/src/
git clone https://github.com/arut/nginx-rtmp-module
wget http://nginx.org/download/nginx-1.18.0.tar.gz
или исходники во вложении, далее распаковываем, собираем и устанавливаем

Код: Выделить всё

tar -xvf nginx-1.18.0.tar.gz
cd /usr/local/src/nginx-1.18.0
./configure --add-module=/usr/local/src/nginx-rtmp-module --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_ssl_module
если матькается на http_gzip_module, то
./configure --add-module=/usr/local/src/nginx-rtmp-module --without-http_gzip_module --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_ssl_module
make
make install
Монтирование RAMDISKa в FSTAB

Код: Выделить всё

tmpfs /tmp/hls tmpfs rw,nosuid,nodev,relatime,size=262144k,mode=777 0 0
Конфиг nginx

Код: Выделить всё

#user  nobody;
worker_processes  1;
# access_log  logs/access.log  main;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

rtmp {
    server {
        listen 1935;
    # chunk_size 8192;
    application myapp {
    live on;
    hls on;
    hls_path /tmp/hls;
    hls_nested on;


         }
    }
}

http {
      server {
                  listen 8080;
                  server_name  h370i;
                  charset utf-8;
                  location / {
                        root   html;
                        index  index.html index.m3u8;
                  }
                  location /hls {
                        types {
                              application/vnd.apple.mpegurl m3u8;
                              }
                        alias /tmp/hls;
                  }
      }
}

events {
    worker_connections  1024;
}
index.html

Код: Выделить всё

<html><head>
<title>Redirect Page</title>
<script language="JavaScript">
<!-- Begin
redirTime = "1";
redirURL = "/hls/live/";
function redirTimer() { self.setTimeout("self.location.href = redirURL;",redirTime); }
//  End -->
</script></head>
<body onload="redirTimer()" bgcolor="#000000">
</body></html>
и запускам (далее установить в автозапуск)

Код: Выделить всё

/usr/local/nginx/sbin/nginx
Установка obs-studio

Код: Выделить всё

add-apt-repository ppa:obsproject/obs-studio
apt install obs-studio
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Роман Торопов
Администратор
Сообщения: 147
Зарегистрирован: 24 мар 2008, 10:49
Откуда: г. Пермь
Контактная информация:

Re: nginx-rtmp-module

Сообщение Роман Торопов » 28 янв 2021, 08:02

тоже самое, но конфиг nginx с ssl и dash

Код: Выделить всё

worker_processes  1;

rtmp {
    server {
        listen 1935;
    application myapp {
    live on;
    hls on;
    hls_path /tmp/hls;
    hls_nested on;
    dash on;
    dash_path /tmp/hls/dash;

         }
    }
}

http {
      server {
                  listen 8080;
                  server_name nas.ru;
                  return 301 https://nas.ru:8888;
                  charset utf-8;
                  location / {
                        root   html;
                        index  index.html;
                  }
             }
      server {
                  listen 8888 ssl;
                  server_name  nas.ru;
                  ssl on;
                  ssl_certificate /etc/ssl/certs/server.pem;
                  ssl_certificate_key /etc/ssl/private/server.key;
                  ssl_protocols TLSv1.2;
                  charset utf-8;
                  location / {
                        root   html;
                        index  index.html index.m3u8;
                  }
                  location /hls {
                        types {
                              application/vnd.apple.mpegurl m3u8;
                              }
                        alias /tmp/hls;
                  }
                  location /dash {
			root /tmp/hls;
			add_header Cache-Control no-cache;
		}
		location /dash.js {
			root /usr/local/nginx;
		}
      }
}

events {
    worker_connections  1024;
}

Аватара пользователя
Роман Торопов
Администратор
Сообщения: 147
Зарегистрирован: 24 мар 2008, 10:49
Откуда: г. Пермь
Контактная информация:

Re: nginx-rtmp-module

Сообщение Роман Торопов » 14 авг 2021, 21:00

Сборка nginx ssl http/2 с rtmp-модулем:

Код: Выделить всё

su
apt update && apt full-upgrade && apt autoremove && apt autoclean
useradd --no-create-home --shell /bin/false nginx
cd /usr/local/src/nginx/
git clone https://github.com/arut/nginx-rtmp-module
wget http://nginx.org/download/nginx-1.21.3.tar.gz
tar -xvf nginx-1.21.3.tar.gz
cd /usr/local/src/nginx/nginx-1.21.3
./configure --sbin-path=/usr/sbin/nginx --add-module=/usr/local/src/nginx/nginx-rtmp-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-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'
make
make install
Конфиг nginx:

Код: Выделить всё

worker_processes  auto;
rtmp_auto_push on;

rtmp {
    server {
        listen 1935;
    chunk_size 4096;
    application myapp {
    live on;
    hls on;
    record off;
    hls_path /tmp/hls;
    hls_nested on;
    hls_fragment 6s;
    dash on;
    dash_path /tmp/hls/dash;
    dash_fragment 6s;

         }

    }
}

http {
      server {
                  listen 8080;
                  server_name nas.lcl www.nas.lcl;
                  return 301 https://www.nas.lcl:8888;
                  charset utf-8;
                  location / {
                        root   html;
                        index  index.html;
                  }
             }
      server {
                  listen 8888 ssl http2;
                  server_name nas.lcl www.nas.lcl;
                  ssl_certificate /etc/ssl/certs/server3_nginx.srt;
                  ssl_certificate_key /etc/ssl/private/server3.key;
                  ssl_protocols TLSv1.2 TLSv1.3;
		ssl_session_cache   shared:SSL:10m;
		ssl_session_tickets off;
		ssl_session_timeout 1d;
		ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
		ssl_prefer_server_ciphers off;
		add_header Strict-Transport-Security "max-age=63072000" always;
                charset utf-8;
		ssl_stapling on;
		ssl_stapling_verify on;
		ssl_trusted_certificate /etc/ssl/certs/server3_ca_nginx.srt;
		resolver 77.88.8.88;
                  location / {
                        root   html;
                        index  index.html index.m3u8;
                  }
                  location /hls {
                        types {
                              application/vnd.apple.mpegurl m3u8;
                              }
                        alias /tmp/hls;
                  }
                  location /dash {
			root /tmp/hls;
			add_header Cache-Control no-cache;
		}
		location /dash.js {
			root /usr/local/nginx;
		}
      }
}

events {
    worker_connections  1024;
} 
Создаём трансляцию:

Код: Выделить всё

find "/mnt/storage/films/" -depth -type f -iname "*name*.*" -exec ffmpeg -hwaccel cuda -hwaccel_device 0 -re -i {} -map 0:0 -map 0:1 -vf "scale=iw/2:ih/2,format=nv12" -c:v h264_nvenc -b:v 4500k -af aresample=out_sample_fmt=s16:out_sample_rate=48000 -c:a aac -ab 128k -ac 2 -sn -dn -f flv "rtmp://localhost/myapp/live" \;
Ну и смотрим, в приложении:

Код: Выделить всё

https://servername.ru:8888/hls/live/index.m3u8
или в браузере :

Код: Выделить всё

https://servername.ru:8888/dash.js/player/
сам MPEG-DASH плеер для www собираем отдельно - гуглим :)

Ответить