2016-12-17 9 views
1

私はカラオケを作成してVCDに書き込むためにこれらのコードを使用しました。カラオケを自動的に作成するにはバッチコマンドが必要です

xxxxxx_1.m4aファイルは左チャンネル(楽器)、 xxxxxx_0.m4aファイルは右チャンネル(ボーカル付きの歌)です。 become xxxxxx.m4aに結合してください。

ffmpeg -i 123456_1.m4a -i 123456_0.m4a -filter_complex "[0:a][1:a]amerge=inputs=2,pan=stereo|c0<c0+c1|c1<c2+c3[aout]" -map "[aout]" 123456.m4a 

xxxxxx_3.mp4ファイルは音声のない動画です。 xxxxxx_3.mp4xxxxxx.m4aを組み合わせると、カラオケのビデオになります。

ffmpeg -i 123456_3.mp4 -i 123456.m4a -c:v copy -c:a copy 123456.mp4 

xxxxxx.mp4.mpgに形式を変換し、VCDに書き込みます。

ffmpeg -i 123456.mp4 -target pal-vcd 123456.mpg 

これらのすべての123456_1.m4a123456_0.m4a123456_3.mp4は同じフォルダ内にあります。 これは1曲のみです。私は変換が必要な曲がたくさんあるので、この作業を実行するたびにすべての曲をコピーアンドペーストしたくありません。

私はfor /fコマンドを使用して、この変換を自動化して成功せずに試みました。

+1

'/設定を参照してください'オペレーションをサブストリングのため。 '/ f'スイッチなしで' For'を使う必要があります。 'For /? 'を参照してください。また、 '〜'で変数を修飾することで、パスの一部を使用することもできます。したがって、 '%〜dpn0'はバッチファイルの拡張子のないパスです。 forコマンドの '%%〜dpnA'と同じです。 'for /?'と 'call /? 'を参照してください。 –

+1

通常は 'for/f'が行く方法です。あなたが試したものを追加できますか? –

答えて

0

(未テスト)このような何か:?

@Echo off 
Set "Base=X:\path\to\your\folder" 
PushD "%Base%"2>Nul ||(Echo Can't change to %Base% &Pause&Exit /B 1) 
For %%A in (*_3.mp4) Do For /f "Delims=_" %%B in ("%%A") Do Call :Assemble "%%~A" "%%~B" 
PopD 
Goto :Eof 
:Assemble 
Echo Processing %~2 
If Not Exist "%~2_0.m4a" (Echo %~2 right channel missing& Goto :Eof) 
If Not Exist "%~2_1.m4a" (Echo %~2 left channel missing& Goto :Eof) 
ffmpeg -i "%~2_1.m4a" -i "%~2_0.m4a" -filter_complex "[0:a][1:a]amerge=inputs=2,pan=stereo|c0<c0+c1|c1<c2+c3[aout]" -map "[aout]" "%~2.m4a" 
ffmpeg -i %1 -i "%~2.m4a" -c:v copy -c:a copy "%~2.mp4" 
ffmpeg -i "%~2.mp4" -target pal-vcd "%~2.mpg" 
+0

3行目の二重パイプの前に '2> Nul'を追加するだけです。エラーメッセージはリダイレクトせずにエラーコードを記述していますが、エラーメッセージは表示されません。 – Compo

+0

@Compo合意し変更されました。ヒントをありがとう。 – LotPings

+0

コードをありがとう。私はそれを試し、あなたに結果を知らせます。 –

関連する問題