[英]Trim a video and add the boomerang effect on it with FFmpeg
我有一个给定的源视频,总共 30 秒长。 现在我想修剪前 5 秒并对其应用回旋镖效果。 这就是我目前所在的命令:
ffmpeg -i src.mp4 -y -an -filter_complex "[0]trim=start=0:end=5[a];[a]reverse[r];[a][r]concat,loop=0:250,setpts=N/30/TB" out.mp4
我对 ffmpeg 相对较新,我正在尝试了解原理,但我有点挣扎。 在阅读了一些文档后,我了解到第一个括号 [0] 是用于操作的源 stream,前导括号是 output ZF7B44CFAFD5C52223D5498196C8A2E 等名称,因此可以继续使用其他操作。
这就是我用 [a] 尝试的,它应该充当我修剪视频的 output stream。 但这并没有奏效。
我发现的另一种方法是使用-ss 0 -t 5
,但这会在处理结束时对其进行修剪,因为 ffmpeg 会在整个 30 秒内应用我的操作并在之后丢弃 25 秒,因此效率低下。
我理解错了什么,我该如何解决?
像这样的东西?
ffmpeg -i src.mp4 -filter_complex "
[0]trim=start=0:end=5[a];
[0]trim=start=0:end=5,reverse[b];
[a][b]concat
" -an out.mp4 -y -hide_banner
我发现的另一种方法是使用
-ss 0 -t 5
,但这会在处理结束时对其进行修剪,因为 ffmpeg 会在整个 30 秒内应用我的操作并在之后丢弃 25 秒,因此效率低下。
请记住,所有标志都适用于下一个输入/输出文件。
如果您只想读取输入文件的前 5 秒,则必须将-ss 0 -t 5
放在-i
标志之前:
ffmpeg -ss 0 -t 5 -an -i src.mp4 -y -filter_complex "[0]split[b][c];[c]reverse[r];[b][r]concat" out.mp4
这将仅在src.mp4
的前 5 秒运行过滤器链。
如果将-ss 0 -t 5
放在输入文件之后,它将适用于 output out.mp4
,因此将处理完整的输入文件,但仅将结果的前 5 秒写入out.mp4
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.