Update: Nginx Config, Stats, SD variant on live stream
This commit is contained in:
parent
efcccab20f
commit
3d3064e73e
@ -1,7 +1,8 @@
|
|||||||
FROM registry.sindominio.net/nginx
|
FROM registry.sindominio.net/nginx
|
||||||
|
|
||||||
RUN apt-get update -y && \
|
RUN apt-get update -y && \
|
||||||
apt-get install -y libnginx-mod-rtmp cron
|
apt-get install -y libnginx-mod-rtmp cron \
|
||||||
|
ffmpeg wget
|
||||||
|
|
||||||
RUN rm -rf /var/www/html/*
|
RUN rm -rf /var/www/html/*
|
||||||
|
|
||||||
@ -21,6 +22,9 @@ RUN mkdir -p /var/www/html/hls && \
|
|||||||
# poner el index.html css y js
|
# poner el index.html css y js
|
||||||
COPY index.html /var/www/html/
|
COPY index.html /var/www/html/
|
||||||
|
|
||||||
|
RUN mkdir /var/www/html/rtmp/ && \
|
||||||
|
wget https://raw.githubusercontent.com/arut/nginx-rtmp-module/master/stat.xsl -O /var/www/html/rtmp/stat.xsl
|
||||||
|
|
||||||
RUN mkdir -p /var/www/html/assets/
|
RUN mkdir -p /var/www/html/assets/
|
||||||
COPY assets/styles-sintoniza.css /var/www/html/assets/
|
COPY assets/styles-sintoniza.css /var/www/html/assets/
|
||||||
COPY assets/video-js.min.css /var/www/html/assets/video-js.min.css
|
COPY assets/video-js.min.css /var/www/html/assets/video-js.min.css
|
||||||
@ -28,5 +32,5 @@ COPY assets/video.min.js /var/www/html/assets/video-js.min.js
|
|||||||
COPY assets/jquery-3.6.1.slim.min.js /var/www/html/assets/jquery-slim.min.js
|
COPY assets/jquery-3.6.1.slim.min.js /var/www/html/assets/jquery-slim.min.js
|
||||||
|
|
||||||
# copiar la configuración por defecto de nginx con nuestros cambios incluidos
|
# copiar la configuración por defecto de nginx con nuestros cambios incluidos
|
||||||
COPY nginx-site-default.conf /etc/nginx/sites-available/default
|
COPY nginx-site-default.conf /etc/nginx/sites-enabled/default
|
||||||
|
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
version: "3"
|
||||||
|
services:
|
||||||
sintoniza:
|
sintoniza:
|
||||||
container_name: sintoniza
|
build: .
|
||||||
hostname: sintoniza
|
|
||||||
restart: always
|
restart: always
|
||||||
image: registry.sindominio.net/sintoniza
|
image: registry.sindominio.net/sintoniza
|
||||||
user: 111:65534
|
user: 111:65534
|
||||||
ports:
|
ports:
|
||||||
- "0.0.0.0:8080:8080"
|
- "0.0.0.0:8080:8080"
|
||||||
|
- "0.0.0.0:1935:1935"
|
||||||
|
@ -18,6 +18,33 @@ rtmp {
|
|||||||
# para bloquear el directo
|
# para bloquear el directo
|
||||||
# quita el comentario de la línea siguiente
|
# quita el comentario de la línea siguiente
|
||||||
# deny play all;
|
# deny play all;
|
||||||
}
|
|
||||||
|
# TODO: Podemos usarlo para validar los accesos
|
||||||
|
#on_publish http://docker.for.mac.host.internal:5000/api/stream/start;
|
||||||
|
#on_publish_done http://docker.for.mac.host.internal:5000/api/stream/end;
|
||||||
|
|
||||||
|
## Transcode video for low latencies
|
||||||
|
exec ffmpeg -i rtmp://localhost/entrada/$name -c:v libx264 -x264opts keyint=60:no-scenecut -b:v 450k -c:a copy -s 854x480 -r 30 -sws_flags bilinear -tune zerolatency -preset veryfast -f flv rtmp://localhost/show/$name_sd;
|
||||||
|
}
|
||||||
|
|
||||||
|
application show {
|
||||||
|
live on; # Allows live input from above
|
||||||
|
hls on; # Enable HTTP Live Streaming
|
||||||
|
hls_type live; # Either 'event' or 'live' (live means played from current live position)
|
||||||
|
deny play all; # Disable consuming the stream from nginx as rtmp
|
||||||
|
|
||||||
|
hls_fragment 2s;
|
||||||
|
hls_playlist_length 10s;
|
||||||
|
|
||||||
|
# Pointing this to an SSD is better as this involves lots of IO
|
||||||
|
# hls_path /tmp/hls/;
|
||||||
|
hls_path /var/www/html/canal/variant/;
|
||||||
|
|
||||||
|
# Instruct clients to adjust resolution according to bandwidth
|
||||||
|
#hls_variant _subsd BANDWIDTH=400000;
|
||||||
|
hls_variant _sd BANDWIDTH=1000000;
|
||||||
|
#hls_variant _hd BANDWIDTH=5000000;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,17 +12,35 @@ server {
|
|||||||
location / {
|
location / {
|
||||||
try_files $uri $uri/ =404;
|
try_files $uri $uri/ =404;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location /control {
|
||||||
|
rtmp_control all;
|
||||||
|
}
|
||||||
|
|
||||||
|
# rtmp stat
|
||||||
|
location /stat {
|
||||||
|
rtmp_stat all;
|
||||||
|
rtmp_stat_stylesheet stat.xsl;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /stat.xsl {
|
||||||
|
root /var/www/html/rtmp;
|
||||||
|
}
|
||||||
|
|
||||||
location /canal {
|
location /canal {
|
||||||
# Disable cache
|
# Disable cache
|
||||||
add_header Cache-Control no-cache;
|
add_header Cache-Control no-cache;
|
||||||
|
|
||||||
# CORS setup
|
# CORS setup
|
||||||
|
add_header 'Cache-Control' 'no-cache';
|
||||||
add_header 'Access-Control-Allow-Origin' '*' always;
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
|
||||||
|
add_header 'Access-Control-Allow-Headers' 'Range';
|
||||||
|
|
||||||
# allow CORS preflight requests
|
# allow CORS preflight requests
|
||||||
if ($request_method = 'OPTIONS') {
|
if ($request_method = 'OPTIONS') {
|
||||||
add_header 'Access-Control-Allow-Origin' '*';
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
add_header 'Access-Control-Allow-Headers' 'Range';
|
||||||
add_header 'Access-Control-Max-Age' 1728000;
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
add_header 'Content-Length' 0;
|
add_header 'Content-Length' 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user