0

我不是批处理编程方面的专家,我唯一的技能是 C\C++。我什至不知道该怎么做。

我有一堆视频,比如 Video1.mp4、Video2.mp4(这不是他们的实际名称,但他们确实有数字表示开始和结束)

基本上我有这个FFMPEG命令可以用来将所有这些转换为 16:10 的纵横比,看起来像这样:

"ffmpeg -i "Section 1 Video 1.mp4" -aspect 16:10 OutSection 1 Video 1.mp4"
"ffmpeg -i "Section 1 Video 2.mp4" -aspect 16:10 OutSection 1 Video 2.mp4"
"ffmpeg -i "Section 2 Video 1.mp4" -aspect 16:10 OutSection 2 Video 1.mp4"

现在不是一遍又一遍地写这个命令,反正我有没有用数字代替实际变量?我知道第 1 节在视频 27 结束,第 2 节在视频 26 结束,依此类推。基本上我需要循环运行 165 次,所以我不需要编写命令 165 次。

或者这超出了单纯的批处理程序的能力范围?

4

1 回答 1

0

好吧,当然批处理可以做到,真正的问题是你能正确地处理问题吗?

这里有三种方式——FFMPEG命令只是简单地回显。删除ECHO以激活。

@ECHO OFF
SETLOCAL enabledelayedexpansion
:: way the first
for /l %%a IN (1,1,27) DO FOR /l %%b IN (1,1,27) DO (
 IF EXIST "section %%a video %%b.mp4" ECHO FFMPEG -i "Section %%a Video %%b.mp4" -aspect 16:10 "OutSection %%a Video %%b.mp4"
)
ECHO ==============================
:: Way the second
for /l %%a IN (1,1,27) DO FOR /l %%b IN (1,1,27) DO (
 SET /a total=%%a+%%b
 IF !total! leq 28 ECHO FFMPEG -i "Section %%a Video %%b.mp4" -aspect 16:10 "OutSection %%a Video %%b.mp4"
)
ECHO ==============================
:: Way the third
FOR %%i IN ("Section * Video *.mp4") DO (
ECHO FFMPEG -i "%%i" -aspect 16:10 "Out%%i"
)
ECHO ==============================

现在 - 这里的问题是 - 你确定你的FFMPEG线路吗?在我看来,您已经省略了输出文件名周围的引号。

另一个问题是你能数数吗?如果您如您所说,第 1 部分中有 27 个视频,第 2 部分中有 26 个视频等等,那么您可能有 27+26+25...3+2+1 个视频要转换 - 根据我的说法,这将是 378计算 - 更重要的是,批处理 - 不是 165。

于 2013-05-13T09:52:56.300 回答