有一个视频文件,要进行以下处理,[0, 13, 2 倍速] 表示从 0 到 13 帧做 2 倍速处理,按照以下列表,依次对整个视频中各个片段做不同的倍速处理后,以 H264 压制写到输入文件。希望整个过程都使用 FFmpeg 进行处理。
[0, 13, 2 倍速]
[13, 20, 1 倍速]
[20, 25, 2 倍速]
[25, 135, 1 倍速]
[135, 164, 2 倍速]
[164, 250, 1 倍速]
[250, 254, 2 倍速]
[254, 309, 1 倍速]
[309, 354, 2 倍速]
[354, 438, 1 倍速]
[438, 465, 2 倍速]
[465, 540, 1 倍速]
[540, 625, 2 倍速]
目前我实现了两种方法,但都不完美:
使用 FFmpeg 将输入视频的所有帧提取成 jpeg,依次放到一个文件夹 1,根据区间和倍速信息,将需要的帧图片移动到文件夹 2,最后将文件夹 2 的图片用 FFmpeg H264 编码合成为一个视频。缺点是:
使用 openCV 将输入视频逐帧读取,根据区间和倍速信息,决定是否将这一帧写入到输出视频。缺点是:
这样下来,整体还是比 FFmpeg 提取图片筛选后再压制方法一慢一些。
所以寻求可以直接使用 FFmpeg 读取输入文件的同时按上述区间和倍速信息列表用 H264 编码写到输出文件的方法。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.