ffmpeg:如何在 m3u8 播放列表中包含动态路径? (播放列表和片段位于不同的目录中。)

ffmpeg: How to include dynamic path in m3u8 playlist? (Playlist and segments are in different directories.)

我有一个实时网络摄像头流,我使用 ffmpeg 将其剪切为 10 秒的片段,实时流式传输,并将片段存储在 day/hour 目录结构中。

ffmpeg.exe [input]
-f segment
-strftime 1
-segment_format mpegts
-segment_time 10
-segment_list_size 6
-segment_list "D:\cams\cam1\live.m3u8"
-segment_list_type m3u8
"D:\cams\cam1\%a\%H\%M%S.ts"

所以我的 "live.m3u8" 和我的段在不同的目录中(段在子目录中)。默认情况下,当 ffmpeg 生成 m3u8 列表时,它只添加文件名:而不是 Fri/12/1234.ts,文件名行只有 1234.ts,所以它显然不起作用。

有一个选项 segment_list_entry_prefix 可以将路径添加为前缀,但我的前缀是动态的 (%a/%H/)。出于某种原因,动态参数不起作用:播放列表没有 Fri/12/1234.ts 而有 %a/%H/1234.ts.

是 ffmpeg 错误,还是我的命令中缺少某些内容?如何修复?

写出列表条目的例程提取每个段的basename,所以目前无法完成。试试 HLS 混合器。

我怀疑这就是你需要的?

-hls_segment_filename "video/%Y/%m/%d/%H/%s.ts"