gpt4 book ai didi

linux - 使用交叉淡入淡出和普通剪切将视频与 ffmpeg 结合

转载 作者:太空狗 更新时间:2023-10-29 12:01:11 26 4
gpt4 key购买 nike

我正在编写一个脚本,将来自 S3 的任意视频文件组合/切片成一个输出视频。到目前为止,我首先使用 ffmpeg -i input-X.mp4 -ss start -t duration slice-X.mp4 将视频修剪到合适的长度,然后将生成的切片与ffmpeg concat 过滤器。

我希望能够在视频之间交叉淡入淡出和剪切。 concat 不支持转换。在 Linux 命令行上将视频与淡入淡出和剪切相结合的最佳方法是什么? ffmpeg 是这项工作的最佳工具吗?

我的问题类似于"How do you create a crossfade transition between multiple videos in FFMPEG?"但我不一定需要使用 ffmpeg。此外,我希望能够在一些切片之间淡入淡出并在其他切片之间剪切。

最佳答案

下面是单步命令模板,假设有五个切片。

ffmpeg -i input.mp4 -i input.mp4 -i input.mp4 -i input.mp4 -i input.mp4 \
-filter_complex \
"[0:v]trim=0.5:4.5,setpts=PTS-STARTPTS[1]; \
[1:v]trim=12:17,setpts=PTS-STARTPTS+(3/TB),format=yuva420p,fade=in:st=3:d=1:alpha=1[2]; \
[2:v]trim=34.1:36,setpts=PTS-STARTPTS+(7/TB),format=yuva420p,fade=in:st=7:d=1:alpha=1[3]; \
[3:v]trim=21:25,setpts=PTS-STARTPTS[4]; \
[4:v]trim=27:31,setpts=PTS-STARTPTS+(3/TB),format=yuva420p,fade=in:st=0:d=1:alpha=1[5]; \
[0:a]atrim=0.5:4.5,asetpts=PTS-STARTPTS[1a]; \
[1:a]atrim=12:17,asetpts=PTS-STARTPTS[2a]; \
[2:a]atrim=34.1:36,asetpts=PTS-STARTPTS[3a]; \
[3:a]atrim=21:25,asetpts=PTS-STARTPTS[4a]; \
[4:a]atrim=27:31,asetpts=PTS-STARTPTS[5a]; \
[1][2]overlay,format=yuv420p[12]; \
[12][3]overlay,format=yuv420p[123]; \
[4][5]overlay,format=yuv420p[45]; \
[1a][2a]acrossfade=d=1[12a]; \
[12a][3a]acrossfade=d=1[123a]; \
[4a][5a]acrossfade=d=1[45a]; \
[123][123a][45][45a]concat=n=2:v=1:a=1[v][a]" \
-map [v] -map [a] SingleStepOutput.mp4

我多次输入视频,每个切片一次,因为使用单个输入板(即使使用 split/asplit)会导致缓冲区溢出。

使用setpts/asetpts 过滤器是因为trim/atrim 保留了原始时间戳。 setpts 过滤器是必须淡入的切片的偏移量。偏移量值是前面的幻灯片持续时间 - crossfade durationyuva420p 需要创建一个 alpha channel ,其值实际上由淡入淡出过滤器调制。

关于linux - 使用交叉淡入淡出和普通剪切将视频与 ffmpeg 结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com