用 FFmpeg 自动混合游戏录屏多条音轨并实现右键一键处理
在使用 **Outplayed / OBS 录屏** 时,经常会遇到视频有多条音轨,但上传到 QQ 或其他平台时只保留了主声轨的问题。本文分享一个轻量级解决方案,用 **FFmpeg + BAT 脚本**实现多条音轨自动混合,并生成新的 AAC 音频视频文件。
·
在使用 Outplayed / OBS 录屏 时,经常会遇到视频有多条音轨,但上传到 QQ 或其他平台时只保留了主声轨的问题。本文分享一个轻量级解决方案,用 FFmpeg + BAT 脚本实现多条音轨自动混合,并生成新的 AAC 音频视频文件。
背景
在使用 Outplayed 录制游戏视频时,我发现视频里存在 多条音轨:
- Track 0:麦克风声音
- Track 1:游戏声音
- Track 2:其他音效
问题出现了:
当我把录屏发给朋友或者上传到 QQ 时,只能听到 自己麦克风声音,游戏声音丢失。
我希望能把多条音轨合并为 单条音轨,同时:
- 尽量保持原音质
- 视频保持原画质(不重新编码)
- 能够快速处理,最好拖入视频即可
- 最终希望在 Windows 资源管理器右键直接处理视频
第一步:使用 FFmpeg 命令混音
初始尝试命令如下:
ffmpeg -i "input.mp4" -filter_complex "[0:a]amix=inputs=N:duration=longest" -c:v copy -c:a aac -b:a 192k "output.mp4"
- 使用 FFmpeg 的
amix滤镜合并音轨 [0:a]自动匹配视频内所有音轨inputs=N指定音轨数量duration=longest保证音轨长度匹配视频- 避免了手动拼接
[0:a:0][0:a:1]…导致多 1 输入的报错
问题1:文件变小
- 原因:原视频可能是多条高码率音轨或无损音轨
- 解决方法:可以选择高码率 AAC 或无损 PCM 音频
- 这里为了方便传输,选择默认
192k即可
问题2:音轨数量只能手动确认
-
解决方法:使用 FFprobe 可以快速检测视频内的音轨数量:
for /f %%a in ('ffprobe -v error -select_streams a -show_entries stream^=index -of compact "视频路径" ^| find /c /v ""') do set audioCount=%%a -
%audioCount%保存音轨数量 -
若检测到 0 条音轨,则提示用户并退出
第二步:写 bat 脚本实现拖入处理
为了快速处理,我写了一个 bat 脚本:
@echo off
chcp 65001
setlocal
echo =====================================
echo 音轨混合工具 (自动检测 N 条音轨, 192k AAC)
echo =====================================
:: 拖入文件路径
set "input=%~1"
set "input=%input:"=%" :: 去掉首尾双引号
if "%input%"=="" (
echo 错误:未指定视频文件
pause
exit /b
)
if not exist "%input%" (
echo 错误:找不到文件 "%input%"
pause
exit /b
)
:: 文件名和扩展名
for %%f in ("%input%") do set "filename=%%~nf"
for %%f in ("%input%") do set "ext=%%~xf"
for %%f in ("%input%") do set "filepath=%%~dpf"
set "output=%filepath%%filename%_audioMix%ext%"
:: 检测音轨数量
for /f %%a in ('ffprobe -v error -select_streams a -show_entries stream^=index -of compact "%input%" ^| find /c /v ""') do set audioCount=%%a
echo 检测到音轨数量: %audioCount%
if %audioCount%==0 (
echo 错误:未检测到音轨
pause
exit /b
)
:: 执行混音 (简化方式,避免多余 amix 输入)
ffmpeg -i "%input%" -filter_complex "[0:a]amix=inputs=%audioCount%:duration=longest" -c:v copy -c:a aac -b:a 192k "%output%"
if errorlevel 1 (
echo FFmpeg 执行出错: "%input%"
) else (
echo 完成!输出文件: "%output%"
)
pause
注意事项
- 输入路径不要加双引号,脚本会自动处理
- 视频文件名会生成
_audioMix后缀,不覆盖原文件 - 自动检测音轨数量并进行合并操作
第三步:实现右键一键处理
为了方便,我将 bat 文件加入 右键菜单:
- 按下 Win + R,输入:
shell:sendto
- 把
mix_audio.bat复制到打开的文件夹
- 优点:
- 无需改注册表,简单安全。
- 可以直接右键处理视频
总结
- Outplayed 多轨录屏直接发送只听到麦克风,是因为音轨未合并
- 用 FFmpeg + amix 可以轻松混合音轨
- 用 bat 脚本 可以实现拖入视频自动处理
- 加入 右键菜单 后,可直接在资源管理器操作,极大提升效率
💡 PS.
- 默认音频 192k AAC 足够清晰且文件体积小
- 视频不转码,保持原画质
- 输出文件自动加
_audioMix后缀,不覆盖原文件
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)