如何使用ffmpeg跳过开始帧

Dar*_*cic 1 php ffmpeg

我已经使用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个吗?

问题是因为视频介绍导致第一帧实际上无用

evi*_*obu 6

选择过滤器应跳过前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 需要一段时间:

以下示例都是有效持续时间:

55 55秒

12:03:45 12小时03分45秒

23.189 23.189秒

由于视频压缩的工作原理非常复杂(P和B帧不能独立放置),因此这些方法都不能完全准确。ffmpeg将尝试相应地进行调整:

请注意,在大多数格式中,无法精确搜索,因此ffm​​peg将搜索到位置之前最接近的搜索点。-accurate_seek启用转码并启用(默认设置)后,搜寻点和位置之间的此额外片段将被解码并丢弃。在进行流复制或-noaccurate_seek使用时,将保留它。

有关更多信息,请参考ffmpeg文档