如何配置 nginx plus 来服务 Live HLS(不是 VOD)
how to configure nginx plus to serve Live HLS (not VOD)
我无法配置最新的 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 as origin
所以我想 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 {
}
}
Nginx Plus 支持 video-on-demand only using Apple HLS
or Adobe HDS
. Alternatively you can create a HLS Live
stream using an RTMP
input with the Nginx RTMP Module 的自适应流(也适用于 Nginx 的基本版本)。
虽然 Nginx 不会 创建 实时 HLS
流,但您仍然可以提供由 ffmpeg
等其他工具创建的 HLS
,因为它使用 HTTP
.
即使在 Nginx 的免费版本中也能正常工作out-of-the-box,无需配置任何东西。
您可以选择手动添加 MIME 类型或添加特定的 headers(例如 cache-control、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';
}
我无法配置最新的 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 as origin
所以我想 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 {
}
}
Nginx Plus 支持 video-on-demand only using Apple HLS
or Adobe HDS
. Alternatively you can create a HLS Live
stream using an RTMP
input with the Nginx RTMP Module 的自适应流(也适用于 Nginx 的基本版本)。
虽然 Nginx 不会 创建 实时 HLS
流,但您仍然可以提供由 ffmpeg
等其他工具创建的 HLS
,因为它使用 HTTP
.
即使在 Nginx 的免费版本中也能正常工作out-of-the-box,无需配置任何东西。
您可以选择手动添加 MIME 类型或添加特定的 headers(例如 cache-control、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';
}