【问题标题】:nginx live adaptive bitrate streaming:- not able to switch quality manuallly?nginx 实时自适应比特率流:- 无法手动切换质量?
【发布时间】:2021-03-03 22:11:59
【问题描述】:

我正在使用 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. 未定义p

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

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

使用其他直播

【问题讨论】:

    标签: nginx ffmpeg live-streaming nginx-config


    【解决方案1】:

    您需要将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>;
    

    【讨论】:

    • 如何将它添加到 master.m3u8,因为它是由 nginx 和 ffmpeg 本身创建的。
    • @AshadNasim 假设您在 nginx RTMP 模块配置中使用 hls_variant 然后尝试 hls_variant &lt;var&gt; BANDWIDTH=&lt;bandwidth&gt;,RESOLUTION=&lt;w&gt;x&lt;h&gt; 并将值替换为您的实际值。您可能还想添加 CODECS 以获得更好的衡量标准。
    • @AshadNasim 检查主播放列表是否确实包含新的分辨率属性。您是否重新加载了模块配置?
    • @AshadNasim 重新加载 nginx 中的模块配置
    • 非常感谢您的帮助
    猜你喜欢
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    相关资源
    最近更新 更多