我与我的客人进行了视频通话,以下是视频源的样子:
反馈 1(由嘉宾本地录制,仅录制他/她的音频/视频)
Feed 2(由我本地录制,仅录制我的音频/视频)
我可以确定两者的开始时间点(即 10 秒后等等)。
我想要创建一个合并的 feed,其中:
只有客人讲话时才会显示/听到客人的声音
当我说话时,别人会看见/听到我
即脚本应该根据音频波来决定要显示哪个视频
它还应该同步音频音量,以便听众听到的两个音频音量听起来相同。
ffmpeg 可以做到吗?
答案1
使用 xstack+join:
ffmpeg \
-ss 10 -i test01.mkv \
-ss 10 -i test02.mkv \
-filter_complex '
[0:1]aresample=async=1:first_pts=0,pan=1c|c0=c0+c1,dynaudnorm=f=200:g=7[0a1];
[1:1]aresample=async=1:first_pts=0,pan=1c|c0=c0+c1,dynaudnorm=f=200:g=7[1a1];
[0a1][1a1]join=inputs=2[a0];
[0:0][1:0]xstack=inputs=2:layout=0_0|1024_0[v0]
' -map [v0] -map [a0] -c:v:0 h264 -c:a:0 aac output.mkv -y -hide_banner
xstack=布局=
0_0 - 第一个视频的坐标
1024_0 - 第二个视频的坐标
pan=1c|c0=c0+c1 - 连接前将立体声转为单声道
dynaudnorm-标准化体积
连接 - 左音频至左声道,右音频至右声道