file - FFmpeg 批处理文件 - 将单个集合文件与另一组文件中的随机选择相结合

标签 file batch-file audio ffmpeg

我需要将一组特定的文件与另一组文件的随机选择结合起来;对于更具体的上下文,语音剪辑后跟随机对讲机哔哔声。目前,到目前为止,我已经设法组装了这个,而不是四处寻找:

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/

相关文章:

batch-file - 创建批处理文件以使用动态名称复制文件夹内容

regex - 正则表达式批处理

xml - 如何使用 xml starlet 选择 xml 值

algorithm - 使用 timeit 或 time 计时两个算法(python)

java - Android Studio 禁用点击声音

C 解析文件内容

php - 如何在 php 包含文件中设置 html 内容的样式?

file - 将源文件的内容附加到目标文件

c++ - 从返回 int 的函数中获取 char 的正确方法?

Android:使用 MediaRecorder 录制音频 - 文件无法播放