我已经使用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.";
Run Code Online (Sandbox Code Playgroud)
实际上,这将创建5秒。视频。问题是因为第一帧是从0-1秒提取的。
有机会跳过第一帧并提取下5个吗?
问题是因为视频介绍导致第一帧实际上无用
此选择过滤器应跳过前5帧:
$ ffmpeg -i input_file -vf select="gte(n\, 5)" ...
Run Code Online (Sandbox Code Playgroud)
对于时间跨度,它甚至更容易-跳过第一秒:
$ ffmpeg -i input_file -ss 1 ...
Run Code Online (Sandbox Code Playgroud)
-ss 需要一段时间:
以下示例都是有效持续时间:
5555秒
12:03:4512小时03分45秒
23.18923.189秒
由于视频压缩的工作原理非常复杂(P和B帧不能独立放置),因此这些方法都不能完全准确。ffmpeg将尝试相应地进行调整:
请注意,在大多数格式中,无法精确搜索,因此ffmpeg将搜索到位置之前最接近的搜索点。
-accurate_seek启用转码并启用(默认设置)后,搜寻点和位置之间的此额外片段将被解码并丢弃。在进行流复制或-noaccurate_seek使用时,将保留它。
有关更多信息,请参考ffmpeg文档。