image-processing - 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 中是否有我更好地使用它而不是这些参数的参数?
解决方案
-qscale:v 1
您可以通过附加到命令来设置帧质量。
qscale代表质量等级,v代表视频,范围是1到31。1是最高质量,31是最低质量。
推荐阅读
- ios - Catalyst 中弹出框的水平尺寸等级?
- laravel - .env 变量在 Laravel 项目中的 Vue 组件中返回 undefined
- perl - 给定 Perl 中的部分键匹配,从多维散列中获取散列键
- android - 如何在 Android 应用中查找使用 cookie 的库
- azure - Azure Web 应用程序对应用程序网关的访问限制
- android-studio - Android Studio/IntelliJ 不断将“gradleHome”设置为不正确的位置
- javascript - 如何引用 mongoDB Schema 中的另一个字段而不是 ObjectID?
- plugins - 无法安装 Swagger 插件
(ReadyAPI3.8.1) - css - 如何在下一行的整个宽度上显示单个网格项的标题?
- javascript - Vue 3:将 this.$refs 与 lang="ts" 一起使用?