mirror of
https://github.com/DanielnetoDotCom/YouPHPTube
synced 2025-10-03 09:49:28 +02:00
142 lines
6.7 KiB
Nginx Configuration File
142 lines
6.7 KiB
Nginx Configuration File
user www-data;
|
|
worker_processes 1;
|
|
error_log stderr debug;
|
|
events {
|
|
worker_connections 1024;
|
|
}
|
|
rtmp {
|
|
server {
|
|
listen 1935;
|
|
buflen 1000ms;
|
|
chunk_size 4096;
|
|
ping_timeout 30s;
|
|
### Use case option (max_streams; default is 32 )
|
|
#max_streams 10;
|
|
allow play all;
|
|
#creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments
|
|
application live {
|
|
allow play all;
|
|
live on;
|
|
hls on;
|
|
hls_nested on;
|
|
hls_path /HLS/live;
|
|
hls_playlist_length 60m;
|
|
hls_fragment 4s;
|
|
drop_idle_publisher 30s;
|
|
sync 500ms;
|
|
#Experimental. Force dropped stream, or ended stream from being watched. (idle_streams)
|
|
#idle_streams off;
|
|
on_publish http://avideo/plugin/Live/on_publish.php;
|
|
on_publish_done http://avideo/plugin/Live/on_publish_done.php;
|
|
on_play http://avideo/plugin/Live/on_play.php;
|
|
on_record_done http://avideo/plugin/Live/on_record_done.php;
|
|
|
|
#exec ffmpeg -re -i rtmp://localhost/live/$name -c:v libx264 -preset veryfast -c:a copy -f hls -hls_time 5 -hls_list_size 0 -f flv rtmp://localhost/adaptive/$name_hi;
|
|
#exec ffmpeg -re -i rtmp://localhost/live/$name
|
|
# -c:v libx264 -vf scale=-2:240 -r 20 -g 40 -keyint_min 40 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 400k -maxrate 700k -bufsize 1400k -c:a aac -strict -2 -b:a 96k -f flv rtmp://localhost/adaptive/$name_low
|
|
# -c:v libx264 -vf scale=-2:480 -r 30 -g 60 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 1200k -maxrate 2100k -bufsize 4200k -c:a aac -strict -2 -b:a 128k -f flv rtmp://localhost/adaptive/$name_mid
|
|
# -c:v libx264 -vf scale=-2:720 -r 30 -g 60 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 2400k -maxrate 3000k -bufsize 6000k -c:a aac -strict -2 -b:a 128k -f flv rtmp://localhost/adaptive/$name_hi;
|
|
|
|
recorder video {
|
|
record all manual;
|
|
record_path /var/www/tmp;
|
|
record_notify on;
|
|
record_max_size 2048M;
|
|
record_suffix -%d-%b-%y-%T.flv;
|
|
}
|
|
|
|
### Record Audio Separately ( For podcast )
|
|
#recorder audio {
|
|
# record audio;
|
|
# record_path /var/www/tmp;
|
|
# record_max_size 1024M;
|
|
# record_suffix -%d-%b-%y-%T.mp3;
|
|
#}
|
|
}
|
|
|
|
#application adaptive {
|
|
# live on;
|
|
# hls on;
|
|
|
|
# hls_path /HLS/live;
|
|
# hls_nested on;
|
|
# hls_playlist_length 10m;
|
|
# allow play all;
|
|
# allow publish 127.0.0.1;
|
|
# deny publish all;
|
|
# hls_variant _hi BANDWIDTH=264000,RESOLUTION=1280x720; # this is for line 34 only, do not uncomment it
|
|
# hls_variant _low BANDWIDTH=900000;
|
|
# hls_variant _mid BANDWIDTH=2400000;
|
|
# hls_variant _hi BANDWIDTH=3500000;
|
|
#}
|
|
}
|
|
}
|
|
http {
|
|
include mime.types;
|
|
default_type application/octet-stream;
|
|
server {
|
|
listen 8080;
|
|
server_name localhost _;
|
|
#creates the http-location for our full-resolution (desktop) HLS stream - "http://my-ip/live/my-stream-key/index.m3u8"
|
|
location /live {
|
|
expires 60;
|
|
add_header 'Cache-Control' 'public';
|
|
location ~ \.m3u8$ {
|
|
expires -1;
|
|
# Disable cache
|
|
add_header 'Cache-Control' 'no-cache';
|
|
# CORS setup
|
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
|
}
|
|
|
|
# CORS setup
|
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
|
|
|
# allow CORS preflight requests
|
|
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/vnd.apple.mpegurl m3u8;
|
|
}
|
|
alias /HLS/live;
|
|
}
|
|
#allows us to see how stats on viewers on our Nginx site using a URL like: "http://my-ip/stats"
|
|
#location /stats {
|
|
# stub_status;
|
|
#}
|
|
location /stat {
|
|
rtmp_stat all;
|
|
rtmp_stat_stylesheet stat.xsl;
|
|
}
|
|
location /stat.xsl {
|
|
root html;
|
|
}
|
|
location /control {
|
|
# replace this with the IP of your AVideo site
|
|
allow 127.0.0.1;
|
|
deny all;
|
|
rtmp_control all;
|
|
}
|
|
#allows us to host some webpages which can show our videos: "http://my-ip/my-page.html"
|
|
location / {
|
|
root html;
|
|
index index.html index.htm;
|
|
}
|
|
|
|
#location ~ \.php$ {
|
|
# include /etc/nginx/snippets/fastcgi-php.conf;
|
|
# fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
|
|
#}
|
|
listen 8443 ssl;
|
|
ssl_certificate /etc/apache2/ssl/localhost.crt;
|
|
ssl_certificate_key /etc/apache2/ssl/localhost.key;
|
|
|
|
}
|
|
}
|