回答:
ffmpegタグを使用したので、答えに使用します。
ffmpeg -i input.wmv -s hd720 -c:v libx264 -crf 23 -c:a aac -strict -2 output.mp4
別のCRFパラメーターを指定して、ビデオの品質を変更します。詳細については、x264エンコーディングガイドを参照してください。
ffmpeg -i input.avi -vf scale=-1:720 output.avi
2012年にこの質問に対する最初の受け入れられた回答から時間が経ちました。FFmpegの「スケール」ビデオフィルターを使用する方が、FFmpegの新しいバージョンの方が良いでしょう。
以下に例を示します。このフィルターを使用すると、リクエストしたとおりにオーディオトラックもコピーされます。
ffmpeg -i input.wmv \
-c:v libx264 -preset veryslow -tune film -crf 22 -vf scale=-2:720 \
-c:a copy \
output.mp4
上記の-tune film
オプションは省略するか-tune animation
、使用しているビデオクリップのタイプに応じて試してみてください。
あなたがすることを決めた場合でしょう次のように外部ライブラリlibfdk_aacを用いることであろうオーディオAの良い選択をトランスコードしたいです:
ffmpeg -i input.wmv \
-c:v libx264 -preset veryslow -tune film -crf 22 -vf scale=-2:720 \
-c:a libfdk_aac -b:a 128k \
output.mp4
これは確かに、私がスケーリングしていたwmvファイルで何をするかです。結果は受け入れられる以上のものを見つけるでしょう...
すべてのオーディオトラック、字幕などをそのまま保持する場合は、次のようなものを使用する必要があります。
ffmpeg -i input.mkv \
-map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 \
-vf scale=-1:720 -c:v libx264 -crf 18 -preset veryslow \
-c:a:0 copy -c:a:1 copy -c:s copy \
output.mkv
この場合、input.mkvファイルには2つのオーディオトラックと2つの字幕があります。すべてのオーディオトラック(または字幕、ビデオなど)を1つずつ、または単一のエンティティとして(字幕に指定したように)指定できます。
それが役に立てば幸い...
-map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4
代わりに、代わりに単純に指定できます-map 0
。これにより、入力0のすべてのストリームが自動的に選択されます。オーディオコピーコーデックと同様です。指定する必要がある唯一のコーデックオプションは -c:copy -c:v libx264
です。つまり、「x264にトランスコードする必要があるビデオを除き、すべてのストリームコーデックをコピーするように設定します。」
ffmpeg -i input.mkv -map 0 -vf scale=-1:720 -c:copy -c:v libx264 -crf 18 -preset veryslow output.mkv