在这种情况下如何编辑视频?修剪还是叠加?

在这种情况下如何编辑视频?修剪还是叠加?

我是新手。想要按照自己的想法编辑视频对我来说真的很难,所以我开了一个帖子,需要你的帮助。谢谢。

原始视频通常分开(每秒):1 2 3 4 5 6 7 8 vv .. 我想将其编辑成新的视频,通常为:1 4 3 6 5 8 7 10(保留 1,3,5 并编辑 2,4,6 变成 4,6,8 然后循环)

请帮帮我。我搜索了覆盖但真的不知道如何使用。我该如何通过 ffmpeg 做到这一点?

答案1

混合,添加两次视频,第二个文件偏移量为 2 秒:

#!/bin/bash
ffmpeg -hide_banner -i test04.mkv -ss 2 -i test04.mkv -filter_complex "
[0][1]blend='all_expr=if(mod(trunc(T),2),A,B)'[v];
[0]volume=0:enable='mod(trunc(t+1),2)'[a0];
[1]volume=0:enable='mod(trunc(t),2)'[a1];
[a0][a1]amix[a]
" -map [v] -map [a] -c:v huffyuv -c:a pcm_s16le -f matroska - | ffplay -autoexit -

带有测试源:

ffmpeg -hide_banner -f lavfi -re -i testsrc -ss 2 -f lavfi -re -i testsrc -filter_complex "
[0][1]blend='all_expr=if(mod(trunc(T),2),A,B)'[v]
" -map [v] -c:v huffyuv -f matroska - | ffplay -autoexit -

此代码生成序列:2 1 4 3 6 5 8 7 10 9

改变表达为您的需求,这if(mod(trunc(T),2),A,B)T时间,A也是B流的切换。

答案2

使用选择和覆盖过滤器。

ffmpeg -i in -filter_complex "split=2[main][top];[top]setpts=PTS-2/TB,trim=0[top];[main][top]overlay=enable='mod(floor(t)\,2)'" out.

如果你也有音频,

ffmpeg -i in -filter_complex "split=2[mainv][shiftv];[shiftv]setpts=PTS-2/TB,trim=0[shiftv];[mainv][shiftv]overlay=enable='mod(floor(t)\,2)';asplit=2[maina][shifta];[shifta]asetpts=PTS-2/TB,atrim=0,volume=0:enable='mod(floor(t+1)\,2)'[shifta];[maina]volume=0:enable='mod(floor(t)\,2)'[maina];[maina][shifta]amix=duration=first,volume=2" out.

相关内容