最近,我环顾了片刻,以寻求最佳方法。我尝试了mencoder -speed和libavfilter的setpts选项。我发现最好的方法是输出单个帧,然后将这些帧重新编码为单个视频。本示例假定输入视频为30fps,以获得最佳效果,然后每隔一帧丢帧。
# Output the video at 15fps as jpegs
ffmpeg -i input.m4v -r 15 -f image2 /tmp/output-%06d.jpg
# Re-encode the frames at 30fps as h264
ffmpeg -r 30 -i "/tmp/output-%06d.jpg" -vcodec libx264 -threads 0 -an output.m4v
Run Code Online (Sandbox Code Playgroud)
我有一个视频最初长 16 分 6 秒,帧率为 29.97,但我想加快它的速度(通过丢帧),以便它以正常速度的 16 倍左右播放。这是我使用的命令:
ffmpeg -r:v "480/1" -i input.avi -an -r:v "12/1" output.avi
Run Code Online (Sandbox Code Playgroud)
小智 5
要通过删除帧来加速视频文件,可以使用以下语法:
ffmpeg -r:v "Fin*M/1" -i input.mp4 -an -r:v "Fout/1" output.mp4
Run Code Online (Sandbox Code Playgroud)
Fout”:这只不过是你想要的output.mp4的FPS(每秒帧数)的数量,例如30 FPS。Fin": input.mp4 的 FPS 数,例如 25 FPS。您可以通过以下方式找到这一点:ffmpeg -i input.mp4M”:倍增器,您想要的速度系数,例如 15 使视频速度快 15 倍。Fin * M":所以在这个例子中,即 25 * 15 = 375这个例子的最终结果是:
ffmpeg -r:v "375/1" -i input.mp4 -an -r:v "30/1" output.mp4
Run Code Online (Sandbox Code Playgroud)
从这篇文章中提取这些信息很困难。就我而言,这是试图澄清网上缺失的信息。