Lucrez pentru o mică entitate guvernamentală care dorește să ofere publicului fluxuri live ale reuniunilor consiliului de administrație. Folosim OBS pentru a ne codifica și nu ne-a creat niciodată probleme, dar în ultimul timp am avut o mulțime de plângeri că fluxul nostru live își pierde conexiunea sau pur și simplu nu se încarcă niciodată la capătul nostru web.
Folosim un server de streaming NGINX RTMP/HLS care a fost construit cu peste 5 ani în urmă pentru a furniza acest flux, iar recent l-am actualizat la cea mai recentă versiune a Ubuntu Server și pentru a-l menține cât mai actualizat, am reinstalat chiar și NGINX și am actualizat câteva lucruri ici și colo, dar în general ne-am păstrat vechea configurație. Acum, că am testat asta, totuși, am observat performanțe supărătoare care pot fi bazate pe browser, dar am vrut să întreb aici mai întâi pentru a fi sigur că serverul nostru respectă regulile.
Nginx.conf-ul nostru este după cum urmează:
load_module "module/ngx_rtmp_module.so";
utilizator www-date;
worker_proceses auto;
evenimente {
conexiuni_muncitor 1024;
}
http {
includ /etc/nginx/mime.types;
aplicație de tip_default/octet-stream;
sendfile activat;
keepalive_timeout 65;
#Dacă doriți să activați gzip, decomentați următoarele:
#gzip activat;
#gzip_disable „msie6”;
Server{
asculta 80;
nume_server gazdă locală;
add_header Acces-Control-Permite-Origine *;
#rtmp stat
locație /stat{
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
locație /stat.xsl {
#Acest lucru mută stat.xsl într-o locație diferită
rădăcină /usr/src/nginx-rtmp-module;
}
locație / control {
rtmp_control all;
}
pagina_eroare 500 502 503 504 /50x.html;
locație = /50x.html {
rădăcină html;
}
#client (VLC, etc) poate accesa HLS aici.
locație /hls {
root /tmp;
add_header 'Cache-Control' 'no-cache';
add_header „Acces-Control-Allow-Origin” „*” întotdeauna;
add_header 'Acces-Control-Expose-Headers' 'Content-Length';
dacă ($request_method = 'OPȚIUNI'){
add_header „Acces-Control-Allow-Origin” „*”;
add_header „Acces-Control-Max-Age” 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header „Lungimea conținutului” 0;
întoarcere 204;
}
}
tipuri {
aplicație/liniuță+xml mpd;
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
}
}
rtmp {
Server{
asculta 8081;
chunk_size 8192;
ping 30s;
notify_method get;
permite redarea tuturor;
#allow publish all;
aplicație live {
# Vom împărți fluxul în diferite rate de biți aici pentru streaming adaptiv.
trăiește mai departe;
exec ffmpeg -i rtmp://localhost:8081/live/$name -async 1 -vsync -1 -c:v libx264 -c:a libfdk_aac -b:v 256k -b:a 32k -vf "scale=480: trunc(ow/a/2)*2" -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost:8081/hls/$name_low -c:v libx264 -c:a libfdk_aac -b:v 768k -b:a 96k -vf "scale=720:trunc(ow/a/2)*2" -tune zerolatency -prestat foarte rapid -crf 23 -f flv rtmp://localhost:8081/hls/$name_mid -c: v libx264 -c:a libfdk_aac -b:v 1024k -b:a 128k -vf "scale=960:trunc(ow/a/2)*2" -tune zerolatency -preset veryfast -crf 23 -f flv rtmp:/ /localhost:8081/hls/$name_high -c:v libx264 -c:a libfdk_aac -b:v 1920k -b:a 128k -vf "scale=1280:trunc(ow/a/2)*2" -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost:8081/hls/$name_hd720 -c copy -f flv rtmp://localhost:8081/hls/$name_src;
}
#Ar trebui să trimiteți fluxul RTMP x.264/aac prin ffmpeg către această aplicație
cerere hls {
permite redarea tuturor;
#allow publish all;
trăiește mai departe;
hls pe;
calea_hls /tmp/hls;
hls_playlist_length 60s;
hls_fragment 1s;
hls_variant _low BANDWIDTH=288000,RESOLUTION=426x240;
hls_variant _mid BANDWIDTH=448000,RESOLUTION=640x360;
hls_variant _high BANDWIDTH=1152000,RESOLUTION=854x480;
hls_variant _hd720 BANDWIDTH=2048000,RESOLUTION=1280x720;
hls_variant _src BANDWIDTH=4096000,RESOLUTION=1920x1080;
}
}
}
După cum sa menționat, folosim Video.js pentru a furniza fluxul utilizatorilor noștri pe site-ul nostru.Configurația despre aceasta poate fi în afara domeniului de aplicare al acestei plăci, dar de dragul informațiilor complete, acest flux se redă fără probleme pe Firefox și Chrome (ambele pe desktop), precum și pe Brave Browser (mobil), dar nu dorește lucrează pe Brave Browser (pe desktop) sau Chrome (pe mobil)
Există ceva despre acest nginx.conf care ar putea cauza acest tip de funcționalitate (sau lipsa acesteia?) sau ar fi complet pe partea web a acesteia?