ffmpeg获得高精度的最后x秒

时间:2018-03-12 11:30:33

标签: ffmpeg

我想批处理mp4视频,获取每个视频的最后x秒并将它们保存到单个文件中。 我需要以非常高的精度进行此操作,最好是0.001秒或更好。 找到一个相关的问题(FFMPEG: get last 10 seconds)暗示-sseof,效果很好,但正如答案所说,它不能完全准确地使用流副本。

我正在尝试将视频长度与参考视频的长度相匹配。

我需要重新编码吗?如果我将持续时间指定为00:00:00.000000(我从参考视频ffprobe获得),sseof可以准确地处理这个吗?

请参阅下面的相关ffprobe -i,所有要处理的视频都具有相同的编码。

   Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:00:58.67, start: 0.000000, bitrate: 639 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360, 499 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 131 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
duration=58.673000

有没有更好的方法来达到帧级精度?作为最终目标,我需要以25fps'帧级精度覆盖这些视频。

非常感谢!

1 个答案:

答案 0 :(得分:0)

切割结果仅受ss / sseof精度的影响,如果额外的精度落在关键帧的另一侧,即如果KF为10.822并且您提供-ss 10.82 -i ..则ffmpeg从早期关键帧中选择帧但是如果它是-ss 10.823然后10.822成为了点。

您必须重新编码才能进行可靠的切割。