A.A
A.A

Reputation: 4161

NGINX and FFMPEG generate dynamic adaptive streaming

In this configuration file https://github.com/TareqAlqutami/rtmp-hls-server/blob/master/conf/nginx.conf#L24-L30

for each received stream, transcode for adaptive streaming This single ffmpeg command takes the input and transforms the source into 4 different streams with different bitrates and qualities. # these settings respect the aspect ratio.

How we can dynamically generate variants? i.e for 1080p input generate all variants, but for 240p input generate no variants

Upvotes: 0

Views: 2339

Answers (1)

dinobi
dinobi

Reputation: 560

My startup works without error You need to configure the log and see what error it gives. But another solution is to check manually You may be using a codec that is not installed

I will check your tank, maybe I can contribute here

application live {
            live on; # Allows live input
            exec ffmpeg -i rtmp://localhost/live/$name -threads 8
                        -c:v libx264 -profile:v baseline -b:v 768K -s 640x360 -vf "drawtext= fontcolor=red: fontsize=20: fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: text='360': x=10: y=10:" -f flv -c:a aac -ac 1 -strict -2 -b:a 96k rtmp://localhost/show/$name_360
                        -c:v libx264 -profile:v baseline -b:v 1024K -s 960x540 -vf "drawtext= fontcolor=red: fontsize=20: fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: text='480': x=10: y=10:" -f flv -c:a aac -ac 1 -strict -2 -b:a 128k rtmp://localhost/show/$name_480
                        -c:v libx264 -profile:v baseline -b:v 1920K -s 1280x720 -vf "drawtext= fontcolor=red: fontsize=20: fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: text='720': x=10: y=10:" -f flv -c:a aac -ac 1 -strict -2 -b:a 128k rtmp://localhost/show/$name_720
                        -c:v libx264 -profile:v baseline -b:v 4000K -s 1920x1080 -vf "drawtext= fontcolor=red: fontsize=20: fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: text='720': x=10: y=10:" -f flv -c:a aac -ac 1 -strict -2 -b:a 128k rtmp://localhost/show/$name_1080;

        }


        application show {
            live        on;     # Allows live input from above
            hls         on;     # Enable HTTP Live Streaming
            # hls_fragment  5s;
            # Pointing this to an SSD is better as this involves lots of IO
            hls_path /dest;
            #hls_variant _240 BANDWIDTH=288000;            
            hls_variant _360 BANDWIDTH=448000;
            hls_variant _480 BANDWIDTH=1152000;
            hls_variant _720  BANDWIDTH=2048000;
            hls_variant _1080 BANDWIDTH=4096000; 
        }


Upvotes: 1

Related Questions