我需要将一组特定的文件与另一组文件的随机选择结合起来;对于更具体的上下文,语音剪辑后跟随机对讲机哔哔声。目前,到目前为止,我已经设法组装了这个,而不是四处寻找:
setlocal EnableDelayedExpansion
cd beeps
set n=0
for %%f in (*.*) do (
set /A n+=1
set "file[!n!]=%%f"
)
set /A "rand=(n*%random%)/32768+1"
cd ..
for %%A IN (*.ogg) DO ffmpeg -y -i radio_beep.wav -i "%%A" -i "beeps\!file[%rand%]!" -filter_complex "[0:a:0][1:a:0][2:a:0]concat=n=3:v=0:a=1[outa]" -map "[outa]" "helper\%%A"
目前,这只会运行一次随机化并为每个文件使用该选择。我怎样才能让它对文件夹中的每个 .ogg 进行随机化,并将其作为输入输入 FFmpeg?
最佳答案
您需要为 .ogg
的每次迭代执行随机化环形。
这是一个由 Call
完成的示例在每次迭代中标记一个部分:
@Echo Off
SetLocal EnableDelayedExpansion
Set "i=0"
For %%A In (beeps\*) Do (Set /A i+=1
Set "file[!i!]=%%A")
For %%A In (*.ogg) Do Call :Process "%%A"
GoTo :EOF
:Process
Set /A "rand=(%RANDOM%%%i)+1"
ffmpeg -y -i "radio_beep.wav" -i %1 -i "!file[%rand%]!" -filter_complex "[0:a:0][1:a:0][2:a:0]concat=n=3:v=0:a=1[outa]" -map "[outa]" "helper\%~nx1"
Exit /B
关于file - FFmpeg 批处理文件 - 将单个集合文件与另一组文件中的随机选择相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51683784/