如何在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