fsouza / video-nginx

Docker image with nginx optimized for video delivery.
39 stars 7 forks source link

How this docker image work? #1

Open zhuzhuojiang opened 7 years ago

zhuzhuojiang commented 7 years ago

Thank you for your video docker image. I am trying to run it. But I couldn't find how it works. I check the nginix.conf in container . It only monitor the 80 port. How about other application port? like RTMP 1935. Thank you.

zhuzhuojiang commented 7 years ago

Here is my example ngnix.conf to serve RTMP input and HLS for output, but I couldn't find any m3u8 files generated under /data/hls . Any suggestion and your example conf file ? Thank you very much. Bellow conf is working fine for https://github.com/brocaar/nginx-rtmp-dockerfile , but not for your great image.

  #daemon  off;
  worker_processes  auto;
  events {
    worker_connections 1024;
  }

  error_log stderr;

  rtmp {
    server {
        listen 1935;
        chunk_size 4000;

        application encoder {
            live on;

            exec ffmpeg -i rtmp://localhost:1935/encoder/$name
              -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 2500k -f flv -g 30 -r 30 -s 1280x720 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_720p2628kbs
              -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 1000k -f flv -g 30 -r 30 -s 854x480 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_480p1128kbs
              -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 750k -f flv -g 30 -r 30 -s 640x360 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_360p878kbs
              -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 400k -f flv -g 30 -r 30 -s 426x240 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_240p528kbs
              -c:a libfdk_aac -b:a 64k -c:v libx264 -b:v 200k -f flv -g 15 -r 15 -s 426x240 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_240p264kbs;
        }

        application hls {
            live on;
            hls on;
            hls_fragment_naming system;
            hls_fragment 5s;
            hls_path /data/hls;
            hls_nested on;

            hls_variant _720p2628kbs BANDWIDTH=2628000,RESOLUTION=1280x720;
            hls_variant _480p1128kbs BANDWIDTH=1128000,RESOLUTION=854x480;
            hls_variant _360p878kbs BANDWIDTH=878000,RESOLUTION=640x360;
            hls_variant _240p528kbs BANDWIDTH=528000,RESOLUTION=426x240;
            hls_variant _240p264kbs BANDWIDTH=264000,RESOLUTION=426x240;
        }
        application vod{
            play /videos;
        }
    }
  }

  http {
    server {
        listen 80;

        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /data;
            add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin * always;
        }

        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet static/stat.xsl;
        }

        location /static {
            alias /static;
        }

        location /crossdomain.xml {
            default_type text/xml;
            return 200 '<?xml version="1.0"?>
                <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
                <cross-domain-policy>
                    <site-control permitted-cross-domain-policies="all"/>
                    <allow-access-from domain="*" secure="false"/>
                    <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
                </cross-domain-policy>';
            expires 24h;
        }
    }
  }
fsouza commented 7 years ago

@zhuzhuojiang hey, thanks for opening this issue. I'm sorry to hear you're having issues.

Can you share the docker run line you're using?

Can you see anything in the logs? Can you also share how you're testing it?