我正在生成一个m3u8
文件:
ffmpeg -i Sample2.avi \
-hls_init_time 1 \
-hls_time 10 \
-f hls \
-hls_list_size 0 \
-hls_segment_filename 'partial_file%04d.ts' \
-s 480x270 \
out.m3u8
Run Code Online (Sandbox Code Playgroud)
看来我使用时-hls_time 10
每个片段大约是 10 秒。但是,当我添加时,-hls_init_time 1
生成的所有片段的长度约为 1 秒。
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:2.035367,
partial_file0000.ts
#EXTINF:1.101100,
partial_file0001.ts
#EXTINF:5.372033,
partial_file0002.ts
#EXTINF:1.267933,
partial_file0003.ts
#EXTINF:2.802800,
partial_file0004.ts
#EXTINF:0.867533,
partial_file0005.ts
Run Code Online (Sandbox Code Playgroud)
我只希望第一段为1秒,其他段为10秒。
我浏览了这里的文档,我想我正在按照文档中提到的方式进行操作。
我缺少什么?
hls_init_time
初始播放列表填满 后
ffmpeg
,将在持续时间等于hls_time
这-hls_list_size 0
意味着播放列表将包含所有片段,并且最后只会填充一次。
这就是为什么它永远无法使用该hls_time
值的原因。
解决方案是使用大于的播放列表大小0
。这意味着第一段的hls_list_size
持续时间为1s
。