使用 ffmpeg 合并在线视频通话中的多个视频/音频流(例如 Google Meet 录音)

使用 ffmpeg 合并在线视频通话中的多个视频/音频流(例如 Google Meet 录音)

我与我的客人进行了视频通话,以下是视频源的样子:

  • 反馈 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-标准化体积

连接 - 左音频至左声道,右音频至右声道

相关内容