画質、ビットレート
「最大値を設定(自動設定)」が選ばれている場合の動作について説明します。
1.画質
ffmpeg は、デコードしたフレーム画像を、エンコードします。
制御できるのは、エンコーダの設定なので、フレーム画像をいかにロスを少なくエンコードするかを考えることになります。これは、見た目の画質や入力ファイルの画質とは無関係なことがわかります。とにかく最大画質を設定して変換する以外にはないと言うことです。
ffmpeg には、-qscale 1 と言うオプションがあります。
このオプションは、すべての映像コーデックに有効ではありません。
qscale を指定できない場合は、高いビットレートを与えて画質を維持します。
2.映像のビットレート
映像コーデックによって以下のように処理します。
2.1.flv,mpeg1video,mpeg4,libxvid
qscale が有効なのでビットレートを設定しないでエンコードします。
2.2.mpeg2video
これも、qscale で制御します。
加えて、画像サイズの上限がが720x576 以下に設定されている場合、30分以下の再生時間なら容量を抑える機能が働きます。
これは、わたしのプレーヤーで1ファイルのファイルサイズが大きいと最後まで再生されないための対策です。
この機能は、1280x720 などの画像から DVD規格内に変換している場合に働きます。
予想される容量を算出して、qscale に設定する値を決めます。1,3,4のいずれかの値が使われます。
(入力画像が小さいサイズなら、1が設定されるので、結果は同じになります。)
2.3.libx264
ffmpeg のオプションを使って、libx264 のオプションを設定することになるわけですが、現状では、どうも上手くいきません。
ビットレートを以下のように設定するようにしました。
設定されているビットレートを、最大ビットレートに設定し、その6割をビットレートに設定します。
設定値の6割の値のABR(平均ビットレート)での変換を期待しています。
2.4.その他のコーデックの場合
設定されているビットレートを、ffmpeg のビットレート設定の値にします。
3.音声のビットレート
音声のコーデックによって、以下の3つの対応があります。
- 高圧縮(AAC や MP2 のようにマルチメディア用を目的にしたもの)
- PCM、品質保証(ADPCMなど電話回線の代替として)
- ナローバンド用(AMR、Nellymoser など音声用で低ビットレート)
このタイプによって以下のように処理します。
- 高圧縮の場合、「上限値を指定(自動)」なら、以下のようにします。
16ビットサンプルでのPCMでのビットレートを計算します。この、1/5をビットレートに設定します。このとき、ビットレートのテーブル(コンボボックスに表示される選択肢)から計算値以上の近い値を取ります。
、「上限値を指定(自動)」ではないときは、設定値をそのまま使います。
- PCMや品質保証型の圧縮の場合、ビットレートは固定で、指定ができません。
- ナローバンド用の圧縮は、決まったビットレートが使われ、そのどれかを選択することになります。
|