1

MKV や AVI などのビデオファイルを取得して MP4 に変換し、Web ストリーミングから準備するスクリプトを作成しています。出力で H.264 および AAC コーデックを使用したい。

これまでのところ、私のコマンドは次のようになります。

ffmpeg -i input.mkv -vcodec h264 -acodec aac -ab 128k -ac 2 -strict -2 output.mp4

ただし、コーデックがすでに h.264 である場合、それはまだそれを多重化し、次のように表示されます: (h264 -> libx264)。

「-vcodec h264」を「-vcodec copy」に置き換えると、コーデックが H.264 の場合ははるかに高速になりますが、入力ファイルに別のコーデックがある場合はもちろんコーデックは変更されません。

ソースがH.264でない場合、FFmpegがコーデックがほぼ同じであることを認識し、ビデオストリームを多重化せずにビデオコーデックを変更する方法はありますか?

4

1 に答える 1

1

いいえ。FFmpeg はビットストリームのコピーまたは再エンコードしかできません。特定のコーデックを保持するかどうかを推測することはできません。ファイル情報を解析してから、コピーするかどうかを決定する必要があります。

これを行う方法のいくつかの例を次に示します: MKV から MP4 へのトランスコーディング スクリプトの問題

基本的に、これを行うことができます(@evilsoupからの恥知らずなプラグイン):

ffprobe input.mkv 2>&1 | sed -n '/Video:/s/.*: \([a-zA-Z0-9]*\).*/\1/p' | sed 1q'

h264これにより、H.264 ビデオ ストリームが出力されます。

ちょっとしたヒント: 必要なエンコーダーを正確に指定することに慣れてみてください。h264実際には FFmpeg のエンコーダーではありません。デフォルトではlibx264. むしろ使用して-c:v libx264ください。
もう 1 つ: aacFFmpeg の組み込み AAC エンコーダーです。サード パーティのエンコーダは、VBR エンコーディング モードを好み、libfdk_aacまたはlibfaac提供し、一般に よりも品質が高くなりaacます。

于 2013-03-10T21:41:52.707 に答える