如何在ffmpeg中合成三个带音频的重叠视频?

如何在ffmpeg中合成三个带音频的重叠视频?,ffmpeg,Ffmpeg,我有三个视频:让我们称它们为intro,recording和outro。我的最终目标是像这样将它们缝合在一起: intro和outro都有alpha(prores 4444)和“wipe”转换,因此当overlaying时,它们必须位于录制的顶部。录音是h264,最终我将用它为youtube编码 我已经找到了如何使这件事在intro+录制中正常工作的方法: $ffmpeg\ -我的介绍\ -i.mp4\ -过滤复合物\ “[1:v]tpad=start_duration=10:start_mo

我有三个视频:让我们称它们为
intro
recording
outro
。我的最终目标是像这样将它们缝合在一起:

intro
outro
都有alpha(prores 4444)和“wipe”转换,因此当
overlay
ing时,它们必须位于录制的顶部。录音是h264,最终我将用它为youtube编码

我已经找到了如何使这件事在
intro
+
录制中正常工作的方法

$ffmpeg\
-我的介绍\
-i.mp4\
-过滤复合物\
“[1:v]tpad=start_duration=10:start_mode=add:color=black[rv]\
[1:a]adelay=delays=10s:all=1[ra]\
[rv][0:v]叠加[v];[0:a][ra]amix[a]”\
-映射“[a]”-映射“[v]”\
-movflags faststart-c:v libx264-profile:v high-bf 2-g 30-crf 18-pix_fmt yuv420p\
out.mp4-y
然而,我不能对outro使用
tpad
技巧,因为它会在所有内容上渲染黑色帧

我尝试了各种各样的迭代,使用
setpts
/
asetpts
以及为输入传递
-itscoffset
,但没有找到一种既适用于视频又适用于音频的解决方案。这将尝试在录制开始16秒时启动outro(10秒开始+16秒录制是我如何获得
setpts=PTS+26/TB
)。del,但工作不正常,我从第一帧获得了intro和outro音频,当outro覆盖开始时,录制音频中断:

$ffmpeg\
-我的介绍\
-i.mp4\
-我爱你\
-过滤复合物\
“[1:v]tpad=start_duration=10:start_mode=add:color=black[rv]\
[1:a]adelay=delays=10s:all=1[ra]\
[2:v]setpts=PTS+26/TB[outv]\
[2:a]asetpts=PTS+26/TB[outa]\
[rv][0:v]叠加[v4]\
[0:a][ra]amix[a4]\
[v4][outv]覆盖[v]\
[a4][outa]amix[a]”\
-映射“[a]”-映射“[v]”\
-movflags faststart-c:v libx264-profile:v high-bf 2-g 30-crf 18-pix_fmt yuv420p\
out.mp4-y
我认为正确的解决方法在于正确地使用
setpts
,但我还没有完全理解它。或者,也许我让生活变得复杂,有更简单的方法

在“拥有美好”领域中,我希望能够指定
outro
相对于录制结束的开始。我将对不同长度的一组录音进行此操作。最好有一个命令来调用所有东西,而不是为每个命令指定一个特定的时间戳


谢谢大家!

使用
adelay
进行所有音频调整。在一个
amix
中执行所有混音。 将outro覆盖设置为仅在正确的时间戳开始

使用

$ ffmpeg \
  -i intro.mov \
  -i recording.mp4 \
  -i outro.mov \
  -filter_complex \
  "[1:v]tpad=start_duration=10:start_mode=add:color=black[mainv]; \
   [1:a]adelay=delays=10s:all=1[maina]; \
   [2:v]setpts=PTS+26/TB[outv]; \
   [2:a]adelay=delays=26s:all=1[outa]; \
   [mainv][0:v]overlay=eof_action=pass[previd]; \
   [previd][outv]overlay=enable='gte(t,26)'[v]; \
   [maina][0:a][outa]amix=inputs=3[a]; \
  -map "[v]" -map "[a]" \
  -c:v libx264 -profile:v high -bf 2 -g 30 -crf 18 -pix_fmt yuv420p \
  -movflags +faststart \
  out.mp4 -y