2017-01-16 15 views
0

私はFFmpegを使ってwebmをmp4に変換しています。FFmpeg 2で一括変換する方法は?

私のバッチファイルが

cd "C:\Users\Matt\Desktop\" && for %f in (*.webm) do ffmpeg -y -i "C:\Users\Matt\Desktop\%~f" -vcodec libx264 -b:v 600K -pass 1 -acodec aac -b:a 128k "C:\Users\Matt\Desktop\%~nf.mp4" && ffmpeg -y -i "C:\Users\Matt\Desktop\" -vcodec libx264 -b:v 600K -pass 2 -acodec aac -b:a 128k "C:\Users\Matt\Desktop\%~nf.mp4" 

それはCRFと1つのパスのために動作しますが、2つのパスを使用すると、それが2回目のパスで停止し、エラーを与えている:

C:\ユーザーはマット\ Desktopを\ "-vcodec libx264 -b:v 600K -pass 2 -acodec aac -b:128k C:¥Users¥Matt¥Desktop¥video:無効な引数

パスに最初の二重引用符がなく、ファイル名「ビデオ01.mp4」は切り捨てられます。

+2

第2パスの '-i'パラメータが正しいことは確かですか?あなたが使ったもう2回は、ファイルを指定しました。最後の例では、ディレクトリであるように見えます - ターミナル '\"はエスケープされた '' 'として解釈されている可能性があります。 – Magoo

+0

@Magooあなたが正しいです、2番目のパスには%〜fがありません。それはそれを解決した、ありがとう。 –

+0

2パスは、最初のパスの出力が2番目のパスの入力として使用されることを意味します。 – aschipfl

答えて

2

あなたのコードはcmdで直接動作しますが、バッチではfor変数のパーセント記号を倍にしなければなりません。
バッチ内に1つのライナーは必要ありません。
これがより明確で効果があることを希望します。

@Echo off 
Pushd "C:\Users\Matt\Desktop\" 
for %%f in (*.webm) do (
    ffmpeg -y -i "%%~f" -vcodec libx264 -b:v 600K -pass 1 -acodec aac -b:a 128k -f mp4 NUL 
    ffmpeg -y -i "%%~nf_tmp.mp4" -vcodec libx264 -b:v 600K -pass 2 -acodec aac -b:a 128k "%%~nf.mp4" 
) 
PopD 
Pause 
+0

ファイルは機能しましたが、何らかの理由でFFmpegがクラッシュしましたが、それは私の動画かもしれません。私はまた、.batファイルなしでCMDにコードをコピーしてコピーしようとしています。あなたは私のコードで間違いを見ますか? –

+0

@MattMcManisまあ、私はffmpegの専門家ではなく、パラメータの選択はあなた次第です。 – LotPings

+0

%〜nf_tmp.mp4を使用する必要がありますか?-pass 2の-pass 1 %%〜fと同じ入力ファイルを使用できますか? –

関連する問題