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

もちろん、バッチでそれを行うことができます。本当の問題は、質問のフレーミングを正しく処理できるかということです。

以下に 3 つの方法を示します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 個のビデオを変換する必要があります。計算 - さらに重要なことに、バッチ - 165 ではありません。

于 2013-05-13T09:52:56.300 に答える