在疫情期间,我们的合唱团导演正在录制一段视频,即伴奏,然后每个合唱团成员(在家)都戴着耳机听伴奏,跟着唱,并将他们的声音和可爱的脸录制成视频。我现在想拍摄所有这些不同的视频,并将它们组合成一个视频,所有成员都在小窗格中,Brady Bunch 风格。当然,每个合唱团成员都有不同的硬件,所以音频电平都是不同的,需要标准化。当然,一个人将视频横向拍摄(纵向而不是横向),因此他们的视频必须在添加之前进行裁剪。
另外,我需要将导演的视频定义为“主”流。所以假设导演在她的视频开头有 3 秒的废话,不需要在那里。我想在胡说八道之后立即开始最后的视频。然后,如果合唱团成员 #1 在导演之后 0.4 秒开始了她的视频,我想丢弃她视频的前 2.6 秒。如果合唱团成员 #2 完全无视指示并在导演之后 4.3 秒开始播放视频,那么我需要他的窗格在最终视频中保持空白 1.3 秒。
最后,如果某些视频需要裁剪,所以它们的形状不正确,我会在空白处用这种可爱的绿色填充。有没有办法定义背景颜色,或者甚至有某种背景图像,其中的一部分只显示在视频流不存在的地方?
我曾经问过一个问题,现在正在使用这个命令行:
ffmpeg -y -i "Director.MOV"
-itsoffset 5 -i "Member1.MOV"
-itsoffset 10 -i "Member2.mp4"
-filter_complex "
nullsrc=size=1920x1080 [base];
[0:v] scale=960x540 [clip0];
[0:a]volume=1[aud0];
[1:v] crop=1080:1000:0:920,scale=583x540 [clip1];
[1:a]volume=2,aresample=async=1:first_pts=0[aud1];
[2:v] scale=960x540 [clip2];
[2:a]volume=1.1,aresample=async=1:first_pts=0[aud2];
[base][clip0] overlay=shortest=1:x=0:y=0 [tmp0];
[tmp0][clip1] overlay=shortest=1:x=1148:y=0:enable='gt(t\,5)' [tmp1];
[tmp1][clip2] overlay=shortest=1:x=0:y=540:enable='gt(t\,10) [tmp2];
[aud0][aud1][aud2]amix=inputs=3[a]
" -map "[tmp2]" -map "[a]" -c:v libx264 output.mkv"
但这会导致第一个人的脸独自出现在屏幕上几秒钟,然后其他成员随机加入,最后是导演。我想要一个好的“干净的开始”。
假设添加到导演视频的偏移量是 X 秒。假设她视频前面的废话是Y秒。然后,您将
-ss X+Y
在所有输入之后添加(替换计算值)。替换
nullsrc
为color
。对于 YUV 格式帧,nullsrc 转换为深绿色画布。color
默认为黑色。