Based on tiangolo/nginx-rtmp with some modifications:
FROM tiangolo/nginx-rtmp
# install ffmpeg
RUN apt-get -y update && apt-get -y upgrade && apt-get install -y --no-install-recommends ffmpeg
RUN unlink /var/log/nginx/access.log
RUN unlink /var/log/nginx/error.log
COPY nginx.conf /etc/nginx/nginx.conf
RUN mkdir /var/www
RUN mkdir /var/www/html/
RUN mkdir /var/www/html/streams
RUN mkdir /var/www/html/streams/flv
RUN mkdir /var/www/html/streams/hls
RUN mkdir /var/www/html/streams/videos
EXPOSE 1935 8088
CMD ["nginx", "-g", "daemon off;"]
As well as a modified nginx.conf:
user www-data;
worker_processes auto;
rtmp_auto_push on;
events {
worker_connections 10000;
}
rtmp {
server {
listen 1935;
listen [::]:1935 ipv6only=on;
chunk_size 4096;
access_log /dev/stdout;
application live {
live on;
meta copy;
record all;
record_path /var/www/html/streams/flv;
record_max_size 512K;
record_unique on;
record_suffix %y%m%d_%H%M%S.flv;
exec_record_done bash -c "echo file saved >> /var/log/nginx/access.log";
exec ffmpeg -i rtmp://localhost/live/$name
-c:a aac -b:a 32k -c:v libx264 -b:v 128K -f flv rtmp://localhost/hls/$name_low
-c:a aac -b:a 64k -c:v libx264 -b:v 256k -f flv rtmp://localhost/hls/$name_mid
-c:a aac -b:a 128k -c:v libx264 -b:v 512K -f flv rtmp://localhost/hls/$name_hi;
}
application hls {
live on;
# Turn on HLS
hls on;
hls_type live;
hls_path /var/www/html/streams/hls;
hls_fragment 2s; # 6s
hls_playlist_length 10s;
hls_fragment_naming system;
hls_nested on;
hls_cleanup off;
hls_continuous on;
# Instruct clients to adjust resolution according to bandwidth
hls_variant _low BANDWIDTH=160000;
hls_variant _mid BANDWIDTH=320000;
hls_variant _hi BANDWIDTH=640000;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
server {
listen 8088;
location /stats {
rtmp_stat all;
}
location /control {
rtmp_control all;
}
location / {
root /var/www/html/streams;
add_header 'Cache-Control' 'no-cache';
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
add_header 'Access-Control-Allow-Headers' 'Range';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
}
}
}
Content type
Image
Digest
sha256:477a3774e…
Size
448.8 MB
Last updated
over 3 years ago
docker pull romanejaquez/fundare-rtmp