我使用ffmpeg创建视频的简短预览......
$length = $length_video/5;
$ffmpeg_path." -i ".$content." -vf select='lt(mod(t\,".$length.")\,1)',setpts=N/FRAME_RATE/TB -af aselect='lt(mod(t\,".$length.")\,1)',asetpts=N/SR/TB -an ".$content_new.";
实际上这将产生5秒。视频。问题是因为第一帧是从0-1秒提取的。
有没有机会跳过第一帧并提取下一个5?
问题是因为视频介绍
,第一帧实际上是无用的答案 0 :(得分:3)
此选择过滤器应跳过前5帧:
$ ffmpeg -i input_file -vf select="gte(n\, 5)" ...
对于时间跨度来说,它更容易 - 这会跳过第一秒:
$ ffmpeg -i input_file -ss 1 ...
-ss
需要一段时间:
以下示例均为有效持续时间:
55
55秒
12:03:45
12小时03分45秒
23.189
23.189秒
由于视频压缩的工作原理(P和B帧无法独立存在),因此这些方法都不会完全准确。 ffmpeg 会尝试相应调整:
请注意,在大多数格式中,无法精确搜索,因此ffmpeg将在位置之前寻找最接近的搜索点。当转码和
-accurate_seek
启用(默认值)时,搜索点和位置之间的这个额外段将被解码并丢弃。在进行流复制或使用-noaccurate_seek
时,它将被保留。
有关详情,请参阅ffmpeg documentation。