apt-get update
git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git
apt-get --assume-yes install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev ffmpeg
wget http://nginx.org/download/nginx-1.17.8.tar.gz
tar -xf nginx-1.17.8.tar.gz
cd nginx-1.17.8
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
make -j 1
sudo make install
echo "
worker_processes auto;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
exec_push ffmpeg -i rtmp://127.0.0.1/live/\$name -force_key_frames source -c:v libx264 -b:v 250k -preset veryfast -c:a copy -s 320x180 -pix_fmt yuv420p -f flv rtmp://127.0.0.1/hls/\$name-180p -force_key_frames source -c:v libx264 -b:v 700k -preset veryfast -c:a copy -s 640x360 -pix_fmt yuv420p -f flv rtmp://127.0.0.1/hls/\$name-360p -force_key_frames source -c:v libx264 -b:v 1500k -preset veryfast -c:a copy -s 960x540 -pix_fmt yuv420p -f flv rtmp://127.0.0.1/hls/\$name-540p -c:v copy -c:a copy -f flv rtmp://127.0.0.1/hls/\$name-orig 2>>/var/log/ffmpeg-\$name.log;
allow play 127.0.0.1;
deny play all;
}
application hls {
live on;
hls on;
hls_path /mnt/hls/;
deny play all;
hls_variant -180p BANDWIDTH=346000 RESOLUTION=320x180;
hls_variant -360p BANDWIDTH=796000 RESOLUTION=640x360;
hls_variant -540p BANDWIDTH=1596000 RESOLUTION=960x540;
hls_variant -orig BANDWIDTH=2596000 RESOLUTION=1280x720;
}
}
}
http {
sendfile off;
tcp_nopush on;
directio 512;
default_type application/octet-stream;
server {
listen 80;
location / {
add_header 'Cache-Control' 'no-cache';
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length';
if (\$request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
types {
application/dash+xml mpd;
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /mnt/;
}
}
}
" > /etc/nginx/nginx.conf
Related