我的目标:我需要获取 2 到 4 个单通道 webm 文件(视频/音频)并将它们合并为 1 个带音频的视频。想象一下一个有 4 个人参加视频通话的 Zoom 会议,每个视频源都被单独录制,然后我需要在会议结束后将它们合并。
我目前拥有的:
我已经使用过这个项目: https://github.com/opentok/archiving-composer
开始吧。它使用提供的时间戳将两个视频合并成一个视频,从而达到这个目的。问题是它不会在最终生成的视频中合并/合并两个视频文件的音轨。只有 1 个视频音轨会进入最终视频。具体来说是第一个视频的音频。
以下是上述生成的 ffmpeg 命令:
ffmpeg -y -threads 8 -loglevel info -ss 71.257 -t 1.959 -i /Users/randy/Downloads/archive23/a920ab58-a42d-49fe-a239-b27497b22bb1.webm -filter_complex "[0]scale=640:-1[b];[b]drawtext=fontsize=30:fontcolor=white:fontfile=/Library/Fonts/Tahoma.ttf:text='USER_ID=113,USER_NAME=Randy Mod,USER_TYPE=moderator,TIMESLOT_END=':x=w/2-text_w/2:y=h-line_h-5" -shortest temp-71257-73216.mp4
ffmpeg -y -threads 8 -loglevel quiet -ss 16.16 -t 55.097 -i /Users/randy/Downloads/archive23/a920ab58-a42d-49fe-a239-b27497b22bb1.webm -ss 0 -t 71.257 -i /Users/randy/Downloads/archive23/823ef68a-cb1c-4636-bdfb-ed3d9611a755.webm -filter_complex "[0]scale=320:-1,pad=2*iw:2*ih:0:120[left];[1]scale=320:-1[right];[left][right]overlay=main_w/2:120,scale=640:480,drawtext=fontsize=30:fontcolor=white:fontfile=/Library/Fonts/Tahoma.ttf:text='USER_ID=113,USER_NAME=Randy Mod,USER_TYPE=moderator,TIMESLOT_END=':x=w/4-text_w/2:y=3*h/4-line_h-5,drawtext=fontsize=30:fontcolor=white:fontfile=/Library/Fonts/Tahoma.ttf:text='USER_ID=173,USER_NAME=Part icipant,USER_TYPE=participant,TIMESLOT_END=':x=3*w/4-text_w/2:y=3*h/4-line_h-5" -shortest temp-16160-71257.mp4
ffmpeg -y -threads 8 -loglevel quiet -ss 71.257 -t 1.959 -i /Users/randy/Downloads/archive23/a920ab58-a42d-49fe-a239-b27497b22bb1.webm -filter_complex "[0]scale=640:-1[b];[b]drawtext=fontsize=30:fontcolor=white:fontfile=/Library/Fonts/Tahoma.ttf:text='USER_ID=113,USER_NAME=Randy Mod,USER_TYPE=moderator,TIMESLOT_END=':x=w/2-text_w/2:y=h-line_h-5" -shortest temp-71257-73216.mp4
ffmpeg -y -threads 8 -loglevel quiet -f concat -i 6cde2f22-5fcc-4227-ae9f-24af806af2d5-list.txt -r 24 6cde2f22-5fcc-4227-ae9f-24af806af2d5.mp4
然后我出去研究并想出了以下代码。这将视频和音频结合在一起,但完全忽略了时间戳。因此两个视频同时播放,音频也同时播放。
ffmpeg -i /Users/randy/Downloads/archive23/a920ab58-a42d-49fe-a239-b27497b22bb1.mp4 -i /Users/randy/Downloads/archive23/823ef68a-cb1c-4636-bdfb-ed3d9611a755.mp4 -filter_complex \
"[0:v][1:v]hstack=inputs=2[v]; \
[0:a][1:a]amerge[a]" \
-map "[v]" -map "[a]" -ac 2 -y /Users/randy/Downloads/archive23/output.mp4
我的问题: 我不确定如何将我的第二个示例的音频与将视频按时间戳顺序排列的第一个示例的代码合并起来。
任何帮助或建议都将不胜感激。
谢谢