我目前正在使用以下代码将音频添加到视频文件中,偶尔会替换特定的音频文件。有没有办法随机选择并使用 mp3 代替?我还需要保留控制添加音频音量的能力,就像我现在所做的那样。这可能吗?理想情况下,我也希望以批处理形式对整个 mp4 文件夹执行此操作。我在 Windows 上使用 CMD
ffmpeg -i audiofile.mp3 -i videofile.mp4 -filter_complex amix=normalize=0:weights="0.02 1" outputvideo.mp4
答案1
这是一个例子,您只需根据您的文件夹更改 VideoFolder 和 AudioFolder 变量的位置:
@echo off
SetLocal EnableDelayedExpansion
set "VideoFolder=C:\Users\Ricardo\Videos"
set "AudioFolder=C:\Users\Ricardo\Music\The Official UK Top 100 (09-11-2023)"
IF NOT EXIST "%VideoFolder%\" exit
IF NOT EXIST "%AudioFolder%\" exit
for /f "delims=" %%a in ('dir /b "%AudioFolder%\*.mp3"') do (
set /a MaxAudioFiles+=1
set "Audio[!MaxAudioFiles!]=%%a"
)
for /f "delims=" %%a in ('dir /b "%VideoFolder%\*.mp4" "%VideoFolder%\*.mkv"') do Call :Mix "%%~a"
exit
:Mix
set /a RandomFile=%random% * (%MaxAudioFiles% - 1 + 1) /32768 + 1
ffmpeg -i "%VideoFolder%\%~1" -i "%AudioFolder%\!Audio[%RandomFile%]!" -map_metadata -1 -filter_complex "amix=normalize=0:weights='0.02 1'" -y "%VideoFolder%\%~n1_mod%~x1"
goto :EOF