【问题标题】:how to configure nginx plus to serve Live HLS (not VOD)如何配置 nginx plus 来服务 Live HLS(不是 VOD)
【发布时间】:2015-11-17 22:49:54
【问题描述】:

我无法配置最新的 nginx plus 来流式传输 LIVE HLS(不是 VOD),似乎 hls 模块只执行 VOD HLS 功能!如果我提供了没有

的 m3u8 播放列表
#EXT-X-ENDLIST

这行不通。我发现它只能从 mp4 文件动态生成 m3u8。我不能使用 nginx 文档中描述的 rtmp 模块。我想使用 nginx plus 来提供和播放包含 3 个 ts 片段的直播 m3u8 播放列表,其中播放列表不以:

#EXT-X-ENDLIST

我怎样才能做到这一点?

更新

在@aergistal 的帮助下,似乎不需要 nginx plus 来直播 m3u8 播放列表,我在其中删除了

hls;

来自位置配置,它确实可以很好地服务于 m3u8 实时 ts 片段。

根据https://en.wikipedia.org/wiki/HTTP_Live_Streaming

Nginx Plus:VOD HLS 作为来源

所以我想 OpenSource Nginx 版本足以满足我的要求。

编辑:添加 m3u8 内容(位于路径 /usr/share/nginx/html/hls/t.m3u8)、fstab 条目、nginx 配置

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:719727873
#EXT-X-BYTERANGE:629987@1809876
#EXT-X-PROGRAM-DATE-TIME:2015-08-13T10:54:29.523000Z
#HP-DTS:6890675118
#HP-IFRAMES:6890718318,6890761518,6890804718,6890847918,6890891118
#EXTINF:2,
mnt/win/Video/143/9/463262/bms_VIDEO_ENG_1439463262.ts?range=bytes=1809876-2439863
#EXT-X-BYTERANGE:667211@2439864
#EXT-X-PROGRAM-DATE-TIME:2015-08-13T10:54:31.923000Z
#HP-DTS:6890891118
#HP-IFRAMES:6890934318,6890977518,6891020718,6891063918,6891107118
#EXTINF:2,
mnt/win/Video/143/9/463262/bms_VIDEO_ENG_1439463262.ts?range=bytes=2439864-3107075
#EXT-X-BYTERANGE:593515@3107076
#EXT-X-PROGRAM-DATE-TIME:2015-08-13T10:54:34.323000Z
#HP-DTS:6891107118
#HP-IFRAMES:6891150318,6891193518,6891236718,6891279918,6891323118
#EXTINF:2,
mnt/win/Video/143/9/463262/bms_VIDEO_ENG_1439463262.ts?range=bytes=3107076-3700591

fstab 条目(仅供参考)

//172.18.1.12/bms /usr/share/nginx/html/hls/mnt/win cifs user,uid=500,rw,suid,username=administrator,password=x 0 0

nginx 配置服务器块:

server {
           listen 888;

           # Path for static files
           root /usr/share/nginx/html;
           location  /hls {
           }

    }

【问题讨论】:

  • 您不需要配置它,您只需将片段和播放列表写入网络可访问目录。您可以在 location 块中设置 mime 类型和标题。 Nginx 不会为您创建直播流,但是您需要使用 FFmpeg 之类的其他东西来输出片段/播放列表。
  • @aergistal 谢谢,我没有遇到片段和播放列表生成的问题。问题是当我尝试在 vlc 或 ios 中打开链接 x.x.x.x/hls/live.m3u8 时,它没有打开!但如果我尝试打开 file.mp4.m3u8 就可以了!
  • 您有错误代码/消息吗?检查 nginx error.log 或 VLC 控制台输出。
  • @aergistal 再次感谢,根据 nginx error.log,我的位置配置似乎无效,明天我离开办公室时将使用有效配置进行测试。
  • 您能否在原始问题中添加您的直播m3u8 播放列表的内容?为什么要使用这样的字节范围,是否要使用 HLS 版本 3 而不是增加了对字节范围的支持的 4 版进行直播?

标签: nginx http-live-streaming


【解决方案1】:

Nginx Plus 支持使用Apple HLSAdobe HDSvideo-on-demand only 进行自适应流式传输。或者,您可以使用带有Nginx RTMP ModuleRTMP 输入创建HLS Live 流(也适用于Nginx 的基本版本)。

虽然 Nginx 不会创建直播 HLS 流,但您仍然可以提供由另一个工具(例如 ffmpeg)创建的 HLS,因为它使用 HTTP

即使在 Nginx 的免费版本中也可以开箱即用,无需进行任何配置。

或者,您可以手动添加 MIME 类型或添加特定的标头(例如缓存控制、CORS):

location /hls {
      root /path/to/root;

      types {
           application/vnd.apple.mpegurl m3u8;
           video/mp2t ts;
      }

      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Cache-Control' 'no-cache';
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    相关资源
    最近更新 更多