Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ffmpeg-hls_初始时间-hls_时间不一起工作?_Ffmpeg - Fatal编程技术网

ffmpeg-hls_初始时间-hls_时间不一起工作?

ffmpeg-hls_初始时间-hls_时间不一起工作?,ffmpeg,Ffmpeg,我正在生成一个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 似乎当我使用-hls\u time 10时,每个片段大约为10秒。但是,当我添加-hls_in

我正在生成一个
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
似乎当我使用
-hls\u 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
我只希望第一段为1秒,其他段为10秒

我查阅了文件,我想我是按照文件中提到的那样做的

我错过了什么?

hls\u初始时间

填充初始播放列表后,
ffmpeg
将以等于
hls\u time

您有
-hls\u list\u size 0
,这意味着播放列表将包含所有片段,并且在最后只填充一次

这就是为什么它永远不能使用
hls\u time

解决方案是使用大于
0
的播放列表。这意味着第一个
hls\u列表大小
段的持续时间为
1s

hls\u初始时间

填充初始播放列表后,
ffmpeg
将以等于
hls\u time

您有
-hls\u list\u size 0
,这意味着播放列表将包含所有片段,并且在最后只填充一次

这就是为什么它永远不能使用
hls\u time


解决方案是使用大于
0
的播放列表。这意味着,如果仅使用“-hls\u time 10”,则第一个
hls\u list\u size
段的持续时间将为
1s

,m3u8/播放列表文件将在10秒后创建。这就是为什么我在想“-hls_list_size 1”,它将在1秒后而不是10秒后立即创建播放列表。此外,我打算将所有片段保留在播放列表中,以便用户能够及时查找。这两种情况都有可能实现吗?编写播放列表的时间无关紧要,因为您正在按需编码视频,而不是实时流。它将以您的系统允许的速度输出。实际上需要几秒钟。此时播放机显示错误,无法找到播放列表。虽然,我在播放器中处理了它,以便在3秒后重试,但我认为这不是一种优雅的方式。您必须在将其提供给播放器之前对其进行编码。如果仅使用“-hls_time 10”,则m3u8/播放列表文件将在10秒后创建。这就是为什么我在想“-hls_list_size 1”,它将在1秒后而不是10秒后立即创建播放列表。此外,我打算将所有片段保留在播放列表中,以便用户能够及时查找。这两种情况都有可能实现吗?编写播放列表的时间无关紧要,因为您正在按需编码视频,而不是实时流。它将以您的系统允许的速度输出。实际上需要几秒钟。此时播放机显示错误,无法找到播放列表。虽然,我在播放器中处理了它,在3秒钟后重试,但我认为这不是一种优雅的方式。你必须先对它进行编码,然后才能将其提供给播放器。