我正在尝试将一些文件转换为 ProRes。转换的一个相当重要的部分是:
- 将帧数从 60 减少到 30
- 将每 2 帧融合为一帧,实现更流畅的动作。(一种简单的运动模糊)
我已经尝试过该-blend
命令,但它未被识别为命令。
-i source.mp4 -r 30 -vcodec prores_ks -profile:v 0 Output.mov
如何通过在 ffmpeg 中混合来减少帧数?
我正在尝试将一些文件转换为 ProRes。转换的一个相当重要的部分是:
我已经尝试过该-blend
命令,但它未被识别为命令。
-i source.mp4 -r 30 -vcodec prores_ks -profile:v 0 Output.mov
如何通过在 ffmpeg 中混合来减少帧数?
简单的丢帧:
ffmpeg -i input.mov -r 30 output.mov
minterpolate
使用过滤器插入帧:
ffmpeg -i input.mov -vf minterpolate=fps=30 output.mov
framerate
使用过滤器插入帧:
ffmpeg -i input.mov -vf framerate=fps=30 output.mov
尝试
ffmpeg -h
或者
ffmpeg --help
你会得到一个简短的帮助。请阅读。:)
尝试
ffmpeg -filters
你会有一个可用过滤器的列表
尝试
ffmpeg -help filter=name
您将拥有此过滤器的语法和参数
我已经需要做这样的事情,降低帧率。如果你这样做
ffmpeg -i "input" -r outputframerate [video encoding options...] [-y] "output"
注意:括号 [] 中的内容是可选的。
您将有一个简单的帧速率变化,可能会丢失输入帧。而且,这尤其是你不想得到的。
要在不丢失输入帧的情况下更改帧率,您必须使用视频过滤器。
tblend过滤器混合连续的帧。如果源帧速率是目标帧速率的整数倍(例如:60→30、75→15、75→25,...),则使用该过滤器
ffmpeg -i "input" -vf tblend=all_mode=average [video encoding options...] -r outputframerate⁽¹⁾ [-y] "output"
⁽¹⁾ 如果我自己没有测试过这个过滤器,我确信输出帧率必须设置在某个地方。tblend 过滤器没有 fps 参数。也许它只是混合了 2 个连续的帧?你应该检查这一点,并做一些尝试?
还有另一个帧率转换器,更适合与任何 i/o 帧率一起使用:
mininterpolate:使用运动插值进行帧速率转换。
所以,输入:
ffmpeg -i "input" -vf minterpolate=fps=outputframerate [video encoding options...] [-y] "output"
其他 mininterpolate 参数具有足够好的默认值,以确保良好的混合。检查它们
ffmpeg -help filter=minterpolate
如果要在 mininterpolate 链中添加一些参数,则必须使用 ':' 作为参数分隔符。假设您要使用运动插值模式= blend,而不是默认的运动补偿插值(mci),请键入:
ffmpeg -i "input" -vf minterpolate=fps=outputframerate:mi_mode=blend [video encoding options...] [-y] "output"
如果您想使用多个视频过滤器,则不能链接 -vf 选项。最后一个将覆盖之前的。您必须(作为过滤器参数的“:”)使用“,”作为过滤器分隔符。前任 :
ffmpeg -i "input" -vf minterpolate=fps=outputframerate:mi_mode=blend,filter2=param1=value1:param2=value2[...] [video encoding options...] [-y] "output"
给定过滤器的顺序很重要。
事情已经完成
ffmpeg 版本 3.2.14-1~deb9u1 版权所有 (c) 2000-2019 FFmpeg 开发者