ffmpegを使用して* .aviファイルをバッチ変換する


13

ffmpegを使用して、20個以上の.aviファイルをバッチで変換しようとしています。

私は次のものを持っています

@echo off.

for file in *.avi
do
   ffmpeg -i "$file" -s 640x480 -vcodec msmpeg4v2 "'basename "$file" .avi'.mpg';
done

私の.batファイルでそれは動作しません。Windows OSで動作させるにはどうすればよいですか。ああ、はい、すべてのファイルは同じフォルダーにあります。

私が得るエラーメッセージ:

現時点ではファイルは予期しないものでした


そして、それについて正確に機能しないものは何ですか?
slhck

cmdが非常に速く消えるため、エラーメッセージを取得する方法を教えていただければ、問題の原因をお知らせできます。
ダリウス

前にコマンドウィンドウを開いて([スタート]»[実行…]»cmd)、そこから完全なパスを使用してバッチファイルを実行する必要があります。あなたは実際にビデオで何をしたいですか?これらはどのようなビデオですか?それらをMPGコンテナーに移動するだけですか?または、サイズを変更する必要がありますか?または、msmpeg4v2コーデックが特に必要ですか?
-slhck

ファイルはDVRから取り出され、1GB以上の5分間のクリップです。はい、DVRソフトウェアは圧縮時に哀れです。コーデックが機能するのは、1GBのファイルから約7MBのファイルを取り、管理しやすいためです。そして、そのバッチを実行しようとすると、「この時点でファイルは予期しないものでした」というメッセージが表示されます。
ダリウス

そうですか。結果のビデオコーデックとコンテナを気にしない場合は、代わりにエンコーダとしてx264を使用することをお勧めします。これにより、MPEG-4よりもはるかに優れた品質が得られます。このコマンドはffmpeg -i input.avi -c:v libx264 -crf 23 -s 640x480 output.mp4、CRF値が品質を設定するようなものです(19から24までの値がより良い、より悪い、正気の値)。参照:古いビデオをより小さなサイズに変換します。.MOVファイルのサイズを小さくするには
-slhck

回答:


26

バッチファイルは、Windowsのbatスクリプトに適した形式ではありません。代わりに、スクリプトはLinux向けであるように見えます。Windowsシェルでサポートされているforループを使用するに、スクリプトを変更する必要があります。

以下は、ループのウィンドウを使用してこのタスクを実行する方法の例です。バッチファイルに次の行を追加し、スクリプトをaviファイルと同じディレクトリに移動して実行します。

for %%A IN (*.avi) DO ffmpeg -i "%%A" "%%A.mpg"

これで私は得る[NULL @ 000000000037e360] Unable to find a suitable output format for 'outputfile.avi.mpg;' outputfile.avi.mpg:: Invalid argument
ダリウス

1
行の末尾からそのセミコロンを削除する必要があります
ブレット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.