批量FOR循环与FFMPEG

时间:2014-12-27 10:13:27

标签: batch-file ffmpeg

我想使用ffmpeg将.mp4文件分成更小的.mp4剪辑。

这是没有循环的代码:

ffmpeg -i source-file.mp4 -ss 0 -t 600 first-10-min.mp4
ffmpeg -i source-file.mp4 -ss 600 -t 600 second-10-min.mp4
ffmpeg -i source-file.mp4 -ss 1200 -t 600 third-10-min.mp4
...

如何在Microsoft DOS中将其转换为循环?到目前为止,我有这个:

for /r $i in (*.mp4) do "C:\Program Files\FFMPEG\bin\ffmpeg.exe" -i "C:\Users\Name\Videos\2014-12-27-0926-45.mp4" -ss 0 -t 600

也有人说把--codec拷贝放在某个地方,但我不知道在哪里。

1 个答案:

答案 0 :(得分:0)

你可以构建一个FOR来生成600递增的命令:

SETLOCAL EnableExtensions EnableDelayedExpansion

SET SourceFile="source-file.mp4"
SET Increment=600
REM This is how long the file is.
SET Length=1800
REM For keeping track of the number file we are processing.
SET Count=1

FOR /L IN %%I (0,%Increment%,%Length%) DO (
    ffmpeg -i %SourceFile% -ss %%I -t %Increment% !Count!-10-min.mp4
    SET Count=!Count!+1
)

ENDLOCAL