FFmpeg叠加视频丢失单个音频的问题解决求助
解决FFmpeg视频叠加后仅保留单个音频的问题
你当前命令里用movie滤镜加载第二个视频时,这个滤镜只会读取视频流,不会处理音频,所以输出自然只有第一个视频的声音。要同时保留两个音频,得把两个视频都作为独立输入源,再分别处理视频叠加和音频混合,修正后的命令如下:
ffmpeg -i screen.mkv -i webcam.mp4 -filter_complex "[1:v]scale=600:-1[inner];[0:v][inner]overlay=main_w-(overlay_w+10):main_h-(overlay_h+10)[outv];[0:a][1:a]amix=inputs=2:duration=longest[outa]" -map "[outv]" -map "[outa]" output.mp4
命令说明:
-i screen.mkv -i webcam.mp4:把两个视频都作为独立输入,0:对应screen.mkv,1:对应webcam.mp4[1:v]scale=600:-1[inner]:对第二个视频的画面做缩放,宽度固定600,高度按比例自动计算,输出标记为[inner][0:v][inner]overlay=main_w-(overlay_w+10):main_h-(overlay_h+10)[outv]:把缩放后的第二个视频叠加到第一个视频的右下角(距离边缘各10像素),输出最终画面[outv][0:a][1:a]amix=inputs=2:duration=longest[outa]:混合两个视频的音频,以最长的音频时长为准,输出最终音频[outa]-map "[outv]" -map "[outa]":指定输出文件使用处理后的画面和音频流
额外注意:
如果两个音频格式/采样率不统一导致报错,可以先统一音频参数再混合,比如:
ffmpeg -i screen.mkv -i webcam.mp4 -filter_complex "[1:v]scale=600:-1[inner];[0:v][inner]overlay=main_w-(overlay_w+10):main_h-(overlay_h+10)[outv];[0:a]aresample=44100[0a];[1:a]aresample=44100[1a];[0a][1a]amix=inputs=2:duration=longest[outa]" -map "[outv]" -map "[outa]" output.mp4
如果只想保留其中一个音频(比如只留screen.mkv的声音),去掉音频混合部分,换成-map 0:a即可。
内容的提问来源于stack exchange,提问作者shish
相关产品推荐
相关产品推荐

