【发布时间】:2016-12-30 07:32:21
【问题描述】:
我有一个 flv 视频,想转储假设 3s 第一个关键帧之后的视频长度 PICT_TYPE_I 在 00:39 之后相遇。我准备好了ffmpeg seeking 的document 并在此引用
ffmpeg -ss 00:23:00 -i Mononoke.Hime.mkv -frames:v 1 out1.jpg此示例将在以下位置生成一个图像帧 (out1.jpg) 电影开始后二十三分钟。输入将是 使用关键帧进行解析,速度非常快。从 FFmpeg 2.1 开始,当 使用 ffmpeg 进行转码(即不仅仅是流复制),现在是 -ss 即使用作输入选项,也“帧精确”。以前的 行为(仅寻找最近的前一个关键帧,即使不是 精确)可以使用 -noaccurate_seek 选项恢复。
所以我想如果我使用这个命令(把-ss放在-i之前)
ffmpeg -noaccurate_seek -ss 00:39 -i input.flv -r 10 -s 720x400 -t 3.12 dump.flv
这应该转储一个最后一个3.12s 并从00:39 之后的第一个keyframe 开始的视频,对吗?毕竟,这是我需要的。
但结果是dump.flv 不是以keyframe 开头的,即PICT_TYPE_I 框架。
我知道我可以用ffprobe 找到所有keyframe 开始时间,并重新计算-ss 寻求时间来实现这一目标。但是有没有更好的方法?
【问题讨论】:
-
你也有音频吗?
-
不,音频不重要