2016-09-06 5 views
0

私は4チャンネルdvrのビデオ録画をたくさん持っているフォルダを持っています。複数の変数で同じフォルダのファイルを区切るWindowsのバッチ

各ファイルには、特定のカメラ番号と録画の開始フレームと終了フレームがあります。

IE:2分の記録のために、私は「動画」という名前のフォルダにこれらの8つのファイルを持っている:

ch1_1-1800.avi 
ch2_1-1800.avi 
ch3_1-1800.avi 
ch4_1-1800.avi 
ch1_1801-3600.avi 
ch2_1801-3600.avi 
ch3_1801-3600.avi 
ch4_1801-3600.avi 

私は手動で単一のフレーム間隔のファイルをマージするには、このコマンドラインを使用することができます704x480

ffmpeg -i ch1_1-1800.avi -i ch1_2-1800.avi.avi -i ch3_1-1800.avi.avi -i ch4_1-1800.avi.avi -filter_complex "nullsrc=size=704x480 [base]; [0:v] setpts=PTS-STARTPTS, scale=352x240 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=352x240 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=352x240 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=352x240 [lowerright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=352 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3]; [tmp3][lowerright] overlay=shortest=1:x=352:y=240" -b:v 2000k ch1234_1-1800.avi 

しかし、私は「動画」内のすべてのファイルをproccessする方法を探していますが、Windowsのバッチファイルを使用して自動的にフォルダ.AVIファイル。私はFORループを使用していくつかのことを試みましたが、同じループ上に複数の変数を設定できるかどうかはわかりません。

アイデア?

ありがとうございます。

+0

「DIR/b *表.AVI」で返された(A %%)各ファイルの環境変数を構築するためのアプローチを示してい?シェアしてください!また、どのファイルが一緒に属しているかを判断できる明確な基準を提供する必要があります。 – aschipfl

+0

私は同じフレーム間隔の4チャンネルを一緒にマージする必要があります 私はファイル名とffmpegの例でフレーム間隔がファイルグループについてのヒントであると思っていました。私の悪い。 上記の例では、ch1〜ch4はチャネルで、1-1800と1801〜3600はビデオ録画の1分目と2分目の相対的なフレーム間隔です。 – Luiz

答えて

1

ファイル依存引数の各セットを環境変数にまとめます。次に、バッチファイルを呼び出すときにこれらの累積変数を使用します。

setlocal EnableDelayedExpansion 

    SET I_ARGS= 
    SET OTHER_ARGS= 

    for /f "tokens=*" %%a in ('dir /b *.avi') do (
     SET I_ARGS=!I_ARGS! -i %%a 
     SET OTHER_ARGS=!OTHER_ARGS! blah 
    ) 

    ffmpeg %I_ARGS% %OTHER_ARGS% 

これは、「私はいくつかのことを試してみました...」何の事

+0

私はまだそれを取得しないでください。見つかったすべてのファイルでI_ARGS変数を "auto increment"に設定しますが、4つ以上のファイルがある場合、同じコマンドラインに "-i"を追加し続けます。 – Luiz

+0

あなたが更新されたコードとそれが使用 – FloatingKiwi

+0

を生成することを更新した文字列投稿できます: '@ECHO OFF SETLOCAL EnableDelayedExpansion SETのI_ARGS = のSET OTHER_ARGS =/F "トークン= *" %%で(」FOR をDIR/B * .AVI ')を行う( SETのI_ARGS =!I_ARGS!-iは SET OTHER_ARGS =!OTHER_ARGS!何とかし )%% ECHO%I_ARGS%%OTHER_ARGS% ' 私に出力を与える '-i ch1_1-900.avi -i ch1_901-1800.avi -i ch2_1-900.avi -i ch2_901-1800.avi -i ch3_1-900.avi -i ch3_901-1800.avi -i ch4_1-900.avi -i ch4_901-1800.avi blah blah blah blah blah blah blah blah' そして、同じフレーム間隔のch1、ch2、ch3、ch4のグループを分けて、ffmpegコマンドを実行する必要があります。 – Luiz

関連する問題