自适应比特率流在 NGINX 服务器的 nginx-vod-module 中不起作用

Adaptive bit rate streaming not working in nginx-vod-module in NGINX server

我已经安装了 Nginx 并使用 nginx-vod-module 配置了适用于自适应流的 VOD。在请求 master.m3u8 文件时,我得到了为不同网络带宽提供的相同 ts 文件。

master.m3u8文件内容如下:

 #EXTM3U
 #EXT-X-STREAM-INF:PROGRAMID=1,BANDWIDTH=1914317,RESOLUTION=1280x544,CODECS="avc1.64001f,mp4a.40.2"
  http://localhost/content/Input.mp4/index-v1-a1.m3u8

Nginx 配置为:

   location /content {
        vod hls;
        vod_mode local;

        root /usr/share/nginx/html;

        gzip on;
        gzip_types application/vnd.apple.mpegurl;

        expires 100d;
        add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
    }

如何使用 nginx-vod-module 启用自适应比特率以及验证它的最佳方法是什么?

  1. 您使用不同的 resolutions/bitrates 对 Input.mp4 的多个版本进行编码。纵横比应该相同。例如:Input_high.mp4Input_low.mp4

  2. 您编辑主 m3u8 播放列表并添加每个演绎版及其特定的比特率和分辨率:

    #EXTM3U
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=...,RESOLUTION=...,CODECS="..."
    /content/Input_low.mp4.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=...,RESOLUTION=...,CODECS="..."
    /content/Input_high.mp4.m3u8
    
  3. nginx-vod-module 收到 filename.mp4.m3u8 的请求时,它会自动为 HLS 分段 filename.mp4 并为您创建播放列表。例如:/content/Input_low.mp4.m3u8 for /content/Input_low.mp4