ffmpeg 批量添加背景音乐的代码 优化后
@echo off
title 批量混合有声书与背景音乐
:: 设置背景音乐文件路径
set background_music=bj.mp3
:: 遍历 ./book 文件夹中的所有 MP3 文件
for %%f in (.\book\*.mp3) do (
echo 正在处理 %%f...
:: 使用 FFmpeg 混合背景音乐和有声书音频
ffmpeg -i "%%f" -i "%background_music%" -filter_complex "[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=3" -b:a 128k "%%~nf_with_background.mp3"
echo %%f 已处理完毕,输出为 %%~nf_with_background.mp3
)
echo 所有文件已处理完毕!
pause
这是个bat命令!
@echo off
title 批量混合有声书与背景音乐
set "background_music=背景音乐.mp3"
set "output_dir=已合成"
if not exist "%output_dir%" mkdir "%output_dir%"
for %%f in (.\已加头尾待合成\*.mp3) do (
echo 正在处理 %%f...
ffmpeg -i "%%f" -i "%background_music%" -filter_complex "[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=3" -b:a 128k "%output_dir%\%%~nf_听书.mp3"
if !errorlevel! neq 0 (
echo 错误: %%f 处理失败!
) else (
echo %%f 已处理完毕,输出为 "%output_dir%\%%~nf_听书.mp3"
)
)
echo 所有文件已处理完毕!
pause
更新后的脚本命令!生成的音频会保存到“已合成”文件夹 更方便
@echo off
setlocal EnableDelayedExpansion
set "sample_rate=24000"
set "channels=1"
set "bitrate=48k"
set "silence_dir=静音文件"
if not exist "%silence_dir%" mkdir "%silence_dir%"
:: 创建静音文件
echo 正在创建3秒静音文件...
ffmpeg -f lavfi -i "aevalsrc=0:d=3" -ar %sample_rate% -ac %channels% -ab %bitrate% -c:a libmp3lame -y "%silence_dir%\silence_3s.mp3"
echo 正在创建5秒静音文件...
ffmpeg -f lavfi -i "aevalsrc=0:d=5" -ar %sample_rate% -ac %channels% -ab %bitrate% -c:a libmp3lame -y "%silence_dir%\silence_5s.mp3"
if !errorlevel! neq 0 (
echo 错误:静音文件创建失败!
) else (
echo 静音文件已成功创建在 "%silence_dir%" 目录下。
)
endlocal
pause
这是增加了对有声书mp3添加头尾,前3秒无声和后5秒无声,曲尾建议用格式工厂批量淡出更合适,提升听感!下面是生成无声音频的bat命令!
@echo off
setlocal EnableDelayedExpansion
set "sample_rate=24000"
set "channels=1"
set "bitrate=48k"
set "silence_dir=静音文件"
if not exist "%silence_dir%" mkdir "%silence_dir%"
:: 创建静音文件
echo 正在创建3秒静音文件...
ffmpeg -f lavfi -i "aevalsrc=0:d=3" -ar %sample_rate% -ac %channels% -ab %bitrate% -c:a libmp3lame -y "%silence_dir%\silence_3s.mp3"
echo 正在创建5秒静音文件...
ffmpeg -f lavfi -i "aevalsrc=0:d=5" -ar %sample_rate% -ac %channels% -ab %bitrate% -c:a libmp3lame -y "%silence_dir%\silence_5s.mp3"
if !errorlevel! neq 0 (
echo 错误:静音文件创建失败!
) else (
echo 静音文件已成功创建在 "%silence_dir%" 目录下。
)
endlocal
pause

