0

所以我正在寻找一种将视频文件剪切到文件最后 10 秒的方法。通常我会使用 FFMPEG 或 mencoder,但情况是每次剪切时要剪切的文件的大小都会不同。所以我使用ffmpeg找到了一些一般持续时间的东西,但问题是我需要持续时间以秒为单位而不是00:00:00,所以我可以只使用var-10作为-ss。

我不知道我是否解释得足够好,但简而言之:

每次运行不同长度的视频,新文件只需要最后10秒。需要一些资源,但仍然很快。

提前感谢任何回答的人!

4

1 回答 1

0

这很容易,但不是很容易,当然也不是很快。通常你想要的是:

  • 获取完整的视频长度。这可能很容易从标头中获取它,或者可能非常困难,例如当您在文件中有 RTP 流转储时,或者当文件格式支持(并使用)变量 FPS 并且在其中没有“长度”字段时标题。这些情况可能需要播放整个文件以确定长度。

  • 在这个长度的 -10s 之前寻找最近的关键帧。如果索引文件具有适当的关键帧,这可能非常容易,或者在上述情况下很困难。也可能是唯一的关键帧是第一个关键帧,因此您需要解码整个流才能到达最后 10 秒。

  • 在关键帧之后解码几帧,直到达到 -10 秒标记。

  • 重新编码剩余的帧。理论上,如果您的关键帧正好在 -10 秒标记处,您可以直接转储数据包而无需重新编码,但您不太可能这么幸运。

于 2014-04-01T08:37:11.083 回答