【问题标题】:How to skip start frames with ffmpeg如何使用 ffmpeg 跳过起始帧
【发布时间】:2018-09-25 12:44:52
【问题描述】:

我使用 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 帧?

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

【问题讨论】:

  • 更改为" -ss 1 -i " 跳过第一秒。

标签: php ffmpeg


【解决方案1】:

这个 select 过滤器应该跳过前 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 了解更多信息。

【讨论】:

  • 嗯,这应该很好用 $length_skip = $length_video/2; ffmpeg -ss $length_skip-i file....
猜你喜欢
  • 2019-01-13
  • 2017-11-27
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多