我可以通过随机选择 .mp3 文件来添加音频文件吗?FFmpeg

我可以通过随机选择 .mp3 文件来添加音频文件吗?FFmpeg

我目前正在使用以下代码将音频添加到视频文件中,偶尔会替换特定的音频文件。有没有办法随机选择并使用 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

相关内容