请对此提供帮助

问题描述 投票:1回答:1

我想混合并交换几秒钟的视频。例如,每9秒一次,保持5秒钟保持原始状态,我希望第二8 + 9将为6 + 7,反之亦然,6 + 7将为8 + 9。

我认为叠加层可以使用,但我仍然不知道如何使用它。

ffmpeg
1个回答
0
投票

[基本方法是使用选择过滤器从要改组的片段中提取帧,然后调整这些时间戳以设置其新位置,然后将其叠加到原始视频流上。

ffmpeg -i in -vf "split=3[base][5to7][7to9];[5to7]select='between(mod(t\,9)\,5\,6.999)',setpts=PTS+2/TB[5to7];[7to9]select='between(mod(t\,9)\,7\,8.999)',setpts=PTS-2/TB[7to9];[base][5to7]overlay=enable='between(mod(t\,9)\,7\,8.999)'[base79];[base79][7to9]overlay=enable='between(mod(t\,9)\,5\,6.999)'" -c:a copy out

要对音频执行相同操作,请添加]​​>

-af "asplit=3[base][5to7][7to9];[base]aselect='not(between(mod(t\,9)\,5\,8.999))',aresample=async=1:first_pts=0[base];[5to7]aselect='between(mod(t\,9)\,5\,6.999)',asetpts=PTS+2/TB,aresample=async=1:first_pts=0[5to7];[7to9]aselect='between(mod(t\,9)\,7\,8.999)',asetpts=PTS-2/TB,aresample=async=1:first_pts=0[7to9];[base][7to9][5to7]amix=3,volume=3"

并删除-c:a copy

© www.soinside.com 2019 - 2024. All rights reserved.