![如何在不重复帧的情况下提高视频速度和帧速率](https://linux22.com/image/1500365/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E9%87%8D%E5%A4%8D%E5%B8%A7%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%8F%90%E9%AB%98%E8%A7%86%E9%A2%91%E9%80%9F%E5%BA%A6%E5%92%8C%E5%B8%A7%E9%80%9F%E7%8E%87.png)
我有一段帧率为 30 FPS 的长视频,我想将其转换为帧率为 60 FPS 的 200 倍延时视频。我唯一的问题是 avconv 不必要地复制输出中的其他帧,使得 60 FPS 的输出实际上变成了 30 FPS。我希望每一帧都是独一无二的。在速度提高 200 倍、帧率提高 2 倍的情况下,没有必要复制帧。
例如,问题在于输出使用源帧 1,1,21,21,41,41,...,而我希望它使用帧 1,11,21,31,41,51,...
这是我正在使用的命令:
avconv -i input_30fps.avi -vcodec h264 -an -r 60 -vf "setpts=(1/200)*PTS" output_200x_60fps.avi
答案1
我经常遇到这种情况,在寻求帮助之前,我花了几个小时试图弄清楚,但最后在询问之后几分钟,我自己就找到了解决方案。
事实证明,avconv 并不是我想象中 ffmpeg 的更好替代品,因为 Linux Mint(如果我没记错的话)从官方存储库中删除了 ffmpeg,转而使用 avconv。无论如何,ffmpeg 回来了,我安装了它,并找到了不会重复帧的等效命令:
ffmpeg -i input_30fps.avi -vcodec h264 -an -vf "fps=60, setpts=(1/200)*PTS" output_200x_60fps.avi
答案2
是的,它不起作用的原因是您使用的命令并非旨在加快播放速度,而是为了提高视频的清晰度。