nginx 实时自适应比特率流媒体:- 无法手动切换质量?

nginx live adaptive bitrate streaming:- not able to switch quality manuallly?

我正在使用 Nginx 进行实时自适应比特率流传输。我的直播工作正常。 此外,正在创建块,也正在创建主播放列表,如您在此图像中所见。

我的配置


        application live {
            live on; # Allows live input

            
            exec_push  /usr/bin/ffmpeg -i rtmp://localhost:1935/$app/$name
                    -force_key_frames "expr:gte(t,n_forced*3)" -c:v libx264 -vprofile baseline -vlevel 3.1 -s 640x360  -b:v 1200k  -strict -2   -c:a aac -ar 44100 -ac 2 -b:a 96k  -f flv rtmp://localhost/show/$name_hi
                -force_key_frames "expr:gte(t,n_forced*3)" -c:v libx264 -vprofile baseline -vlevel 3.1 -s 240x360  -b:v 1200k  -strict -2   -c:a aac -ar 44100 -ac 2 -b:a 96k  -f flv rtmp://localhost/show/$name_low;

                
        }



这是我的主播放列表

这是我每个播放列表的m3u8文件

但是当我将主播放列表指向添加的 videojs (hlsjs) 时,它显示了质量

  1. 自动
  2. undefinedp

但是当我使用其他在线测试流时,它会向我显示所有可用质量

使用我使用 nginx ffmpeg 生成的直播流

使用其他直播

您需要将 RESOLUTION 属性添加到 EXT-X-STREAM-INF 标签中的主播放列表。这在 https://www.rfc-editor.org/rfc/rfc8216#section-4.3.4.2 中是可选的,但它是质量选择器 UI 插件所必需的。

参见:https://github.com/chrisboustead/videojs-hls-quality-selector/issues/8

Nginx RTMP 模块配置示例:

hls_variant <variant_name> BANDWIDTH=<bandwidth>,RESOLUTION=<resolution>;