animation - 如何使用 ffmpeg 指定输出图像帧的确切数量?
问题描述
我有N个输入动画帧作为文件夹中的图像,我想在帧之间创建插值以创建长度为N * M的更平滑的动画,即对于每个输入帧我想创建M个输出帧,逐渐变形到下一帧,例如使用minterpolate
过滤器。
换句话说,我想将 FPS 提高M倍,但我没有使用时间,因为我没有使用任何视频格式,输入和输出都是存储为图像文件的图像序列。
我试图结合-r
和FPS
选项,但没有成功,因为我不知道它们如何协同工作。例如:
- 我有 12 个输入帧。
- 我想用
minterpolate
滤镜达到120帧。 - 我使用命令
ffmpeg -i frames/f%04d.png -vf "fps=10, minterpolate" -r 100 interpolated_frames/f%04d.png
- 我得到的结果是 31 个输出帧。
是否有我应该使用-r
的特定组合?FPS
还是有另一种方法可以实现我所需要的?
谢谢!
解决方案
FFmpeg 将 25 的帧率分配给没有固有帧率的格式,例如图像序列。
图像序列解复用器具有设置帧速率的选项。并且 mininterpolate 过滤器具有目标 fps 的选项。
ffmpeg -framerate 12 -i frames/f%04d.png -vf "minterpolate=fps=120" interpolated_frames/f%04d.png
推荐阅读
- reactjs - 将一个 reactjs 应用程序动态加载到另一个 reactjs 应用程序中
- angular - ngOnChanges 不间断地触发并使应用程序不响应
- java - 我的代码在启动时不执行
- python - 使用正则表达式在文本文件中输出唯一组合
- .htaccess - htacces 中的 https 和非 www 重定向
- c++ - 使用 VS 2017 的 _mm_extract_si64 API 调用中未处理的异常
- swift - 如何在 UITableViewCell 类中使用 tableView 属性
- java - 在 Dockerized Java Web 服务中启动新进程
- android - BroadcastReceiver 以随机延迟启动 Activity
- node.js - 无法将我的重定向逻辑结果获取到 node.js、express、mongodb Web 应用程序中的配置文件页面