Sign inSign up

romanejaquez/fundare-rtmp

By romanejaquez

•Updated over 3 years ago

Image
0

333

romanejaquez/fundare-rtmp repository overview

⁠RTMP Server

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;
            }
        }
    }
}

Tag summary

Content type

Image

Digest

sha256:477a3774e…

Size

448.8 MB

Last updated

over 3 years ago

docker pull romanejaquez/fundare-rtmp