nginx-rtmp-module

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
nginx-rtmp-module [2013/11/04 13:17] meisenginx-rtmp-module [2016/12/04 15:13] – [hls] meise
Line 1: Line 1:
 += nginx-rtmp-module
 +
 +== debian pakete
 +
 +<code>
 +apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev libbz2-dev libssl-dev tar unzip 
 +</code>
 +
 +== compile
 +
 +<code>
 +./configure --add-module=../nginx-rtmp-module --with-ipv6 --with-http_stub_status_module 
 +</code>
 +== rtmp
 +
 +/usr/local/nginx/conf/nginx.conf:
 +<code>
 +user  www-data;
 +
 +# multiple worker
 +worker_processes  2;
 +# important for multi worker processes!!1!
 +rtmp_auto_push on;
 +
 +error_log  /var/log/nginx/error.log;
 +pid /var/run/nginx.pid;
 +
 +events {
 +    worker_connections  2048;
 +}
 +
 +http {
 +    server {
 +        listen [::]:80 default ipv6only=off;
 +
 +        root /srv/nginx/htdocs;
 +        index index.html index.htm;
 +
 +        server_name localhost;
 +
 +        # html page stuff
 +        location / {
 +                try_files $uri $uri/ /index.html;
 +        }
 +
 +        location /releases {
 +               alias /srv/releases;
 +               autoindex on;
 +        }
 +
 +        location /releases/private {
 +                alias /srv/releases/private;
 +                auth_basic "Auf zum Atem!!1!";
 +                auth_basic_user_file /etc/nginx/releases_htpasswd;
 +                autoindex on;
 +        }
 +
 +        # hls
 +        location /hls {
 +            types {
 +                application/vnd.apple.mpegurl m3u8;
 +                video/mp2t ts;
 +            }
 +
 +            alias /tmp/hls;
 +            autoindex on;
 +        }
 +
 +        # stats
 +        location /stats/rtmp {
 +            rtmp_stat all;
 +            allow 127.0.0.1;
 +            allow 195.54.164.160/29; # berlin
 +            allow 188.40.235.220;    # oglarun → meise
 +            deny all;
 +        }
 +
 +        location /stats/nginx {
 +            stub_status on;
 +            access_log   off;
 +            allow 127.0.0.1;
 +            allow 195.54.164.160/29; # berlin
 +            allow 188.40.235.220;    # oglarun → meise
 +            deny all;
 +        }
 +    }
 +
 +}
 +
 +rtmp {
 +    server {
 +        listen [::]:1935 ipv6only=off;
 +
 +        ping 30s;
 +
 +        # Disable audio until first video frame is sent.
 +        wait_video on;
 +        # Send NetStream.Publish.Start and NetStream.Publish.Stop to subscribers.
 +        publish_notify on;
 +
 +        # Synchronize audio and video streams. If subscriber bandwidth is not
 +        # enough to receive data at ublisher rate some frames are dropped by
 +        # server. This leads to synchronization problem. When timestamp
 +        # difference exceeds the value specified as sync argument an absolute
 +        # frame is sent fixing that. Default is 300ms.
 +        sync 10ms;
 +
 +        application stream {
 +            # enable live streaming
 +            live on;
 +            meta copy;
 +
 +            hls on;
 +            hls_path /tmp/hls;
 +            hls_fragment 5;
 +
 +            # publish only from localhost
 +            allow publish 127.0.0.1;
 +            deny publish all;
 +
 +            allow play all;
 +        }
 +    }
 +}
 +</code>
 +
 +ffmpeg push:
 +<code>
 +ffmpeg -re -i catcontent.ogg -threads 0 -pix_fmt yuv420p -profile:v baseline -preset fast -tune zerolatency -c:v libx264 -strict -2 -c:a aac -f flv rtmp://localhost:1935/stream/katze
 +</code>
 +
 +== hls
 +
 +/usr/local/nginx/conf/nginx.conf:
 +
 +→ siehe Abschnitt hls und http in der rtmp Konfiguration.
 +
 +ffmpeg push:
 +<code>
 +ffmpeg -re -i catcontent.ogg -threads 0 -pix_fmt yuv420p -profile:v baseline -preset fast -tune zerolatency -c:v libx264 -strict -2 -c:a aac -f flv rtmp://localhost:1935/stream/katze
 +</code>
 +
 +
 + * Das Verhaeltnis aus Segmentlaenge, m3u8 cache duration und
 +   Kaskadentiefe war falsch. Die cache-duration muss < segment-laenge /
 +   2 sein, bei 2 Cache-Stufen (wie bei uns) / 8. Fixed durch Setzen der
 +   Segmentlaenge auf 10s. (Unsere m3u8 cache-duration war und ist 1s)
 +
  
  • nginx-rtmp-module.txt
  • Last modified: 2016/12/04 15:13
  • (external edit)