如何使用ffmpeg跳过起始帧

时间:2018-04-15 19:47:06

标签: 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.";

实际上这将产生5秒。视频。问题是因为第一帧是从0-1秒提取的。

有没有机会跳过第一帧并提取下一个5?

问题是因为视频介绍

,第一帧实际上是无用的

1 个答案:

答案 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 会尝试相应调整:

  

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

有关详情,请参阅ffmpeg documentation