首页 > 解决方案 > FFmpeg 将视频转换为具有复杂逻辑的图像

问题描述

我正在尝试使用 FFMPEG 来解决我的视频中的一些复杂逻辑。

业务逻辑如下:我从以下格式获取视频:avi、mp4、mov。

我不知道视频中的内容是什么。它可以从1M到5G。

我想以我可以获得的更高质量输出该视频中的图像列表。仅捕获与前一帧相比有较大变化的帧。(新人、新角度、大动作等)

此外,我想限制每秒的帧数,即使视频速度非常快并且一直在变化,它也不会产生比这个参数更多的每秒帧数。

我现在正在使用以下命令:

./ffmpeg -i "/tmp/input/fast_movies/3_1.mp4" -vf fps=3,mpdecimate=hi=14720:lo=7040:frac=0.5 -vsync 0 -s hd720 "/tmp/output/fast_movies/(#%04d).png"

根据我的理解,它执行以下操作: fps=3 - 首先将视频剪切为每秒 3 帧(这就是我谈到的限制)

mpdecimate - 过滤没有比我设置的阈值更大的变化的帧。

-vsync 0 - 同步视频时间戳 - 我不知道为什么但没有它 - 它会产生数百个重复帧,忽略 fps 和 mpdecimate 命令。有人可以解释吗?

-s hd720 - 将视频大小设置为

它工作得很好,但我对质量不太满意。你觉得我错过了什么吗?FFMPEG 中是否有我更好地使用它而不是这些参数的参数?

标签: image-processingffmpegvideo-processingvsyncmpdecimate

解决方案


-qscale:v 1您可以通过附加到命令来设置帧质量。

qscale代表质量等级,v代表视频,范围是1到31。1是最高质量,31是最低质量。


推荐阅读