⚠️ これは 非公式の翻訳サイトです。FFmpeg プロジェクトとは無関係です。正確な情報は 原文(https://ffmpeg.org/ffmpeg-codecs.html) を参照してください。

FFmpeg コーデックドキュメント

1 概要

本ドキュメントでは、libavcodec ライブラリが提供する codec(decoder と encoder)について説明します。

2 Codec Options

libavcodec は、すべての encoder と decoder に設定できる汎用のグローバルオプションをいくつか提供しています。これに加えて、各 codec は特定の codec 固有のプライベートオプションをサポートする場合があります。

グローバルオプションが特定の種類の codec にしか影響しないこともあり、別の codec では意味をなさなかったり無視されたりするため、指定するオプションの意味を把握しておく必要があります。また、デコード専用・エンコード専用のオプションもあります。

オプションは、FFmpeg のツールで -option value と指定するか、AVCodecContext のオプションに値を明示的に設定するか、プログラムから利用する場合は libavutil/opt.h の API を用いて設定できます。

サポートされているオプションの一覧を以下に示します。

b integer (encoding,audio,video)

ビットレートを bits/s 単位で設定します。既定値は 200K です。

ab integer (encoding,audio)

音声のビットレートを(bits/s 単位で)設定します。既定値は 128K です。

bt integer (encoding,video)

映像のビットレート許容幅を(bits/s 単位で)設定します。1 パスモードでは、ビットレート許容幅は、ratecontrol が目標とする平均ビットレートからどこまで逸脱してよいかを指定します。これは最小/最大ビットレートとは関係ありません。許容幅を下げすぎると品質に悪影響を及ぼします。

flags flags (decoding/encoding,audio,video,subtitles)

汎用フラグを設定します。

設定できる値:

‘mv4’

マクロブロックごとに 4 つの動きベクトルを使用します(mpeg4)。

‘qpel’

1/4 ペル動き補償を使用します。

‘loop’

ループフィルタを使用します。

‘qscale’

固定 qscale を使用します。

‘pass1’

内部の 2 パス ratecontrol を第 1 パスモードで使用します。

‘pass2’

内部の 2 パス ratecontrol を第 2 パスモードで使用します。

‘gray’

グレースケールのみをデコード/エンコードします。

‘psnr’

エンコード時に error[?] 変数を設定します。

‘truncated’

入力 bitstream がランダムに切り詰められている可能性があります。

‘drop_changed’

ストリーム内で最初にデコードしたフレームとパラメータが異なるフレームを出力しません。フレームが破棄されると、エラー AVERROR_INPUT_CHANGED が返されます。

‘ildct’

インターレース DCT を使用します。

‘low_delay’

低遅延を強制します。

‘global_header’

グローバルヘッダを各 keyframe ではなく extradata に配置します。

‘bitexact’

プラットフォーム・ビルド・時刻に依存しないデータのみを書き出します((I)DCT を除く)。これにより、ファイルやデータのチェックサムが再現可能になり、プラットフォーム間で一致するようになります。主な用途はリグレッションテストです。

‘aic’

H263 の advanced intra coding / mpeg4 の ac 予測を適用します。

‘ilme’

インターレース動き推定を適用します。

‘cgop’

closed gop を使用します。

‘output_corrupt’

破損している可能性のあるフレームも出力します。

time_base rational number

codec の time base を設定します。

これはフレームのタイムスタンプを表す際の基本となる時間の単位(秒)です。固定 fps のコンテンツでは、timebase は 1 / frame_rate であるべきで、タイムスタンプの増分は常に 1 になります。

g integer (encoding,video)

group of picture (GOP) のサイズを設定します。既定値は 12 です。

ar integer (decoding/encoding,audio)

音声のサンプリングレートを(Hz 単位で)設定します。

ac integer (decoding/encoding,audio)

音声チャンネル数を設定します。

cutoff integer (encoding,audio)

カットオフ帯域幅を設定します。(一部の encoder のみがサポートします。各 encoder のドキュメントを参照してください。)

frame_size integer (encoding,audio)

音声のフレームサイズを設定します。

最後のフレームを除き、送信される各フレームはチャンネルあたり正確に frame_size サンプルを含む必要があります。codec に CODEC_CAP_VARIABLE_FRAME_SIZE が設定されている場合は 0 でもよく、その場合フレームサイズに制限はありません。一部の decoder では、フレームサイズが一定であることを示すために設定されます。

frame_number integer

フレーム番号を設定します。

delay integer qcomp float (encoding,video)

映像の量子化スケール圧縮(VBR)を設定します。ratecontrol の式で定数として使われます。既定の rc_eq に対する推奨範囲は 0.0〜1.0 です。

qblur float (encoding,video)

映像の量子化スケールぼかし(VBR)を設定します。

qmin integer (encoding,video)

映像の最小量子化スケール(VBR)を設定します。-1 から 69 の間でなければならず、既定値は 2 です。

qmax integer (encoding,video)

映像の最大量子化スケール(VBR)を設定します。-1 から 1024 の間でなければならず、既定値は 31 です。

qdiff integer (encoding,video)

量子化スケールの最大差分(VBR)を設定します。

bf integer (encoding,video)

非 B フレーム間に入れる B フレームの最大数を設定します。

-1 から 16 の整数でなければなりません。0 は B フレームを無効にすることを意味します。-1 を指定すると、encoder に応じて自動的に値が選ばれます。

既定値は 0 です。

b_qfactor float (encoding,video)

P フレームと B フレームの間の qp factor を設定します。

codec_tag integer bug flags (decoding,video)

自動検出されない encoder のバグを回避します。

設定できる値:

‘autodetect’ ‘xvid_ilace’

Xvid のインターレースバグ(fourcc==XVIX なら自動検出)

‘ump4’

(fourcc==UMP4 なら自動検出)

‘no_padding’

パディングバグ(自動検出)

‘amv’ ‘qpel_chroma’ ‘std_qpel’

古い標準 qpel(fourcc/バージョンごとに自動検出)

‘qpel_chroma2’ ‘direct_blocksize’

direct-qpel-blocksize のバグ(fourcc/バージョンごとに自動検出)

‘edge’

エッジパディングのバグ(fourcc/バージョンごとに自動検出)

‘hpel_chroma’ ‘dc_clip’ ‘ms’

Microsoft の不完全な decoder にあるさまざまなバグを回避します。

‘trunc’

切り詰められたフレーム

strict integer (decoding/encoding,audio,video)

規格にどの程度厳密に従うかを指定します。

設定できる値:

‘very’

より古く厳格なバージョンの規格またはリファレンスソフトウェアに厳密に準拠します

‘strict’

結果がどうであれ、規格に記載されたすべての事項に厳密に準拠します

‘normal’ ‘unofficial’

非公式の拡張を許可します

‘experimental’

非標準の実験的な事項や、実験的な(未完成・作業中・十分にテストされていない)decoder・encoder を許可します。注意: 実験的な decoder はセキュリティ上のリスクとなり得るため、信頼できない入力のデコードには使用しないでください。

b_qoffset float (encoding,video)

P フレームと B フレームの間の QP offset を設定します。

err_detect flags (decoding,audio,video)

エラー検出フラグを設定します。

設定できる値:

‘crccheck’

埋め込まれた CRC を検証します

‘bitstream’

bitstream の規格からの逸脱を検出します

‘buffer’

不正な bitstream 長を検出します

‘explode’

軽微なエラーを検出した時点でデコードを中止します

‘ignore_err’

デコードエラーを無視してデコードを続行します。映像の内容を解析したい場合など、何があっても全部デコードしたいときに便利です。このオプションは、エラーがある場合に見て楽しめる映像になるわけではありません。

‘careful’

規格に違反していて、かつ実際には見られないものをエラーとみなします

‘compliant’

規格への非準拠をすべてエラーとみなします

‘aggressive’

まともな encoder ならしないであろうことをエラーとみなします

has_b_frames integer block_align integer rc_override_count integer maxrate integer (encoding,audio,video)

最大ビットレート許容幅を(bits/s 単位で)設定します。bufsize の設定が必要です。

minrate integer (encoding,audio,video)

最小ビットレート許容幅を(bits/s 単位で)設定します。CBR エンコードを設定する際に最も役立ちます。それ以外ではほとんど用途はありません。

bufsize integer (encoding,audio,video)

ratecontrol のバッファサイズを(bits 単位で)設定します。

i_qfactor float (encoding,video)

P フレームと I フレームの間の QP factor を設定します。

i_qoffset float (encoding,video)

P フレームと I フレームの間の QP offset を設定します。

dct integer (encoding,video)

DCT アルゴリズムを設定します。

設定できる値:

‘auto’

適切なものを自動選択します(既定値)

‘fastint’

高速整数演算

‘int’

高精度整数演算

‘mmx’ ‘altivec’ ‘faan’

浮動小数点 AAN DCT

lumi_mask float (encoding,video)

明るい領域を中間的な領域より強く圧縮します。

tcplx_mask float (encoding,video)

時間的複雑度マスキングを設定します。

scplx_mask float (encoding,video)

空間的複雑度マスキングを設定します。

p_mask float (encoding,video)

インターマスキングを設定します。

dark_mask float (encoding,video)

暗い領域を中間的な領域より強く圧縮します。

idct integer (decoding/encoding,video)

IDCT の実装を選択します。

設定できる値:

‘auto’ ‘int’ ‘simple’ ‘simplemmx’ ‘simpleauto’

simple と互換のある IDCT を自動的に選びます

‘arm’ ‘altivec’ ‘sh4’ ‘simplearm’ ‘simplearmv5te’ ‘simplearmv6’ ‘simpleneon’ ‘xvid’ ‘faani’

浮動小数点 AAN IDCT

slice_count integer ec flags (decoding,video)

エラー隠蔽の方法を設定します。

設定できる値:

‘guess_mvs’

反復的な動きベクトル(MV)探索(低速)

‘deblock’

破損したマクロブロックに強いデブロックフィルタを使用します

‘favor_inter’

現在のフレームではなく前のフレームからの予測を優先します

bits_per_coded_sample integer aspect rational number (encoding,video)

サンプルアスペクト比を設定します。

sar rational number (encoding,video)

サンプルアスペクト比を設定します。aspect のエイリアスです。

debug flags (decoding/encoding,audio,video,subtitles)

特定のデバッグ情報を表示します。

設定できる値:

‘pict’

ピクチャ情報

‘rc’

レート制御

‘bitstream’ ‘mb_type’

マクロブロック(MB)タイプ

‘qp’

ブロックごとの量子化パラメータ(QP)

‘dct_coeff’ ‘green_metadata’

次のフレーム、GoP、または指定した時間分の複雑度メタデータを表示します。

‘skip’ ‘startcode’ ‘er’

エラー認識

‘mmco’

メモリ管理制御操作(H.264)

‘bugs’ ‘buffers’

ピクチャバッファの割り当て

‘thread_ops’

スレッド操作

‘nomc’

動き補償をスキップします

cmp integer (encoding,video)

整数ペル単位の動き推定の比較関数を設定します。

設定できる値:

‘sad’

差分の絶対値の総和、高速(既定値)

‘sse’

二乗誤差の総和

‘satd’

Hadamard 変換した差分の絶対値の総和

‘dct’

DCT 変換した差分の絶対値の総和

‘psnr’

量子化誤差の二乗和(低品質なので避ける)

‘bit’

ブロックに必要なビット数

‘rd’

レート歪み最適、低速

‘zero’

0

‘vsad’

垂直方向の差分の絶対値の総和

‘vsse’

垂直方向の二乗差分の総和

‘nsse’

ノイズを保持する二乗差分の総和

‘w53’

5/3 ウェーブレット、snow でのみ使用

‘w97’

9/7 ウェーブレット、snow でのみ使用

‘dctmax’ ‘chroma’ subcmp integer (encoding,video)

サブペル単位の動き推定の比較関数を設定します。

設定できる値:

‘sad’

差分の絶対値の総和、高速(既定値)

‘sse’

二乗誤差の総和

‘satd’

Hadamard 変換した差分の絶対値の総和

‘dct’

DCT 変換した差分の絶対値の総和

‘psnr’

量子化誤差の二乗和(低品質なので避ける)

‘bit’

ブロックに必要なビット数

‘rd’

レート歪み最適、低速

‘zero’

0

‘vsad’

垂直方向の差分の絶対値の総和

‘vsse’

垂直方向の二乗差分の総和

‘nsse’

ノイズを保持する二乗差分の総和

‘w53’

5/3 ウェーブレット、snow でのみ使用

‘w97’

9/7 ウェーブレット、snow でのみ使用

‘dctmax’ ‘chroma’ mbcmp integer (encoding,video)

マクロブロックの比較関数を設定します。

設定できる値:

‘sad’

差分の絶対値の総和、高速(既定値)

‘sse’

二乗誤差の総和

‘satd’

Hadamard 変換した差分の絶対値の総和

‘dct’

DCT 変換した差分の絶対値の総和

‘psnr’

量子化誤差の二乗和(低品質なので避ける)

‘bit’

ブロックに必要なビット数

‘rd’

レート歪み最適、低速

‘zero’

0

‘vsad’

垂直方向の差分の絶対値の総和

‘vsse’

垂直方向の二乗差分の総和

‘nsse’

ノイズを保持する二乗差分の総和

‘w53’

5/3 ウェーブレット、snow でのみ使用

‘w97’

9/7 ウェーブレット、snow でのみ使用

‘dctmax’ ‘chroma’ ildctcmp integer (encoding,video)

インターレース dct の比較関数を設定します。

設定できる値:

‘sad’

差分の絶対値の総和、高速(既定値)

‘sse’

二乗誤差の総和

‘satd’

Hadamard 変換した差分の絶対値の総和

‘dct’

DCT 変換した差分の絶対値の総和

‘psnr’

量子化誤差の二乗和(低品質なので避ける)

‘bit’

ブロックに必要なビット数

‘rd’

レート歪み最適、低速

‘zero’

0

‘vsad’

垂直方向の差分の絶対値の総和

‘vsse’

垂直方向の二乗差分の総和

‘nsse’

ノイズを保持する二乗差分の総和

‘w53’

5/3 ウェーブレット、snow でのみ使用

‘w97’

9/7 ウェーブレット、snow でのみ使用

‘dctmax’ ‘chroma’ dia_size integer (encoding,video)

動き推定で用いるダイヤモンドの種類とサイズを設定します。

‘(1024, INT_MAX)’

全探索の動き推定(最も低速)

‘(768, 1024]’

umh 動き推定

‘(512, 768]’

hex 動き推定

‘(256, 512]’

l2s ダイヤモンド動き推定

‘[2,256]’

var ダイヤモンド動き推定

‘(-1, 2)’

small ダイヤモンド動き推定

‘-1’

funny ダイヤモンド動き推定

‘(INT_MIN, -1)’

sab ダイヤモンド動き推定

last_pred integer (encoding,video)

前のフレームから得る動き予測子の数を設定します。

precmp integer (encoding,video)

動き推定の事前パスの比較関数を設定します。

設定できる値:

‘sad’

差分の絶対値の総和、高速(既定値)

‘sse’

二乗誤差の総和

‘satd’

Hadamard 変換した差分の絶対値の総和

‘dct’

DCT 変換した差分の絶対値の総和

‘psnr’

量子化誤差の二乗和(低品質なので避ける)

‘bit’

ブロックに必要なビット数

‘rd’

レート歪み最適、低速

‘zero’

0

‘vsad’

垂直方向の差分の絶対値の総和

‘vsse’

垂直方向の二乗差分の総和

‘nsse’

ノイズを保持する二乗差分の総和

‘w53’

5/3 ウェーブレット、snow でのみ使用

‘w97’

9/7 ウェーブレット、snow でのみ使用

‘dctmax’ ‘chroma’ pre_dia_size integer (encoding,video)

動き推定の事前パスで用いるダイヤモンドの種類とサイズを設定します。

subq integer (encoding,video)

サブペル単位の動き推定の品質を設定します。

me_range integer (encoding,video)

動きベクトルの範囲の上限を設定します(DivX プレーヤーでは 1023)。

global_quality integer (encoding,audio,video) slice_flags integer mbd integer (encoding,video)

マクロブロック決定アルゴリズム(高品質モード)を設定します。

設定できる値:

‘simple’

mbcmp を使用します(既定値)

‘bits’

最も少ないビット数を使用します

‘rd’

最良のレート歪みを使用します

rc_init_occupancy integer (encoding,video)

デコード開始前に rc バッファへ読み込んでおくべきビット数を設定します。

flags2 flags (decoding/encoding,audio,video,subtitles)

設定できる値:

‘fast’

規格非準拠の高速化テクニックを許可します。

‘noout’

bitstream のエンコードをスキップします。

‘ignorecrop’

sps のクロップ情報を無視します。

‘local_header’

グローバルヘッダを extradata ではなく各 keyframe に配置します。

‘chunks’

フレームデータが複数のチャンクに分割されている可能性があります。

‘showall’

最初の keyframe より前のフレームをすべて表示します。

‘export_mvs’

対応する codec について、動きベクトルをフレームのサイドデータ(AV_FRAME_DATA_MOTION_VECTORS を参照)へ出力します。doc/examples/export_mvs.c も参照してください。

‘skip_manual’

サンプルをスキップせず、スキップ情報をフレームのサイドデータとして出力します。

‘ass_ro_flush_noop’

フラッシュ時に ASS の ReadOrder フィールドをリセットしません。

‘icc_profiles’

埋め込み ICC プロファイルを colorimetry タグから生成、または colorimetry タグへ解析します。

‘fixed_frame_size’

音声 encoder に固定のフレームサイズを使うよう強制します。

export_side_data flags (decoding/encoding,audio,video,subtitles)

設定できる値:

‘mvs’

対応する codec について、動きベクトルをフレームのサイドデータ(AV_FRAME_DATA_MOTION_VECTORS を参照)へ出力します。doc/examples/export_mvs.c も参照してください。

‘prft’

対応する codec について、encoder の Producer Reference Time をパケットのサイドデータ(AV_PKT_DATA_PRFT を参照)へ出力します。

‘venc_params’

対応する codec について、映像エンコードのパラメータをフレームのサイドデータ(AV_FRAME_DATA_VIDEO_ENC_PARAMS を参照)を通じて出力します。現時点では H.264 と VP9 が対象です。

‘film_grain’

フィルムグレインのパラメータをフレームのサイドデータ(AV_FRAME_DATA_FILM_GRAIN_PARAMS を参照)を通じて出力します。現時点では AV1 の decoder がサポートしています。

‘enhancements’

ピクチャのエンハンスメントメタデータ(例: LCEVC)をフレームのサイドデータ(AV_FRAME_DATA_LCEVC を参照)を通じて出力します。

threads integer (decoding/encoding,video)

選択した codec の実装がマルチスレッドをサポートしている場合に、使用するスレッド数を設定します。

設定できる値:

‘auto, 0’

設定するスレッド数を自動的に選択します

既定値は ‘auto’ です。

dc integer (encoding,video)

intra_dc_precision を設定します。

nssew integer (encoding,video)

nsse の重みを設定します。

skip_top integer (decoding,video)

上端でスキップするマクロブロック行の数を設定します。

skip_bottom integer (decoding,video)

下端でスキップするマクロブロック行の数を設定します。

profile integer (encoding,audio,video)

encoder の codec プロファイルを設定します。既定値は ‘unknown’ です。encoder 固有のプロファイルは、該当する encoder のドキュメントに記載されています。

level integer (encoding,audio,video)

encoder のレベルを設定します。このレベルは個々の codec に依存し、プロファイルのレベルに対応する場合があります。既定では ‘unknown’ に設定されています。

設定できる値:

‘unknown’ lowres integer (decoding,audio,video)

1=1/2、2=1/4、3=1/8 の解像度でデコードします。

mblmin integer (encoding,video)

マクロブロックの最小ラグランジュ係数(VBR)を設定します。

mblmax integer (encoding,video)

マクロブロックの最大ラグランジュ係数(VBR)を設定します。

skip_loop_filter integer (decoding,video) skip_idct integer (decoding,video) skip_frame integer (decoding,video)

オプションの値で選択したフレームタイプに応じて、decoder に処理を破棄させます。

skip_loop_filter はフレームのループフィルタリングを、skip_idct はフレームの IDCT/逆量子化を、skip_frame はデコードをスキップします。

設定できる値:

‘none’

フレームを破棄しません。

‘default’

サイズが 0 のフレームなど、不要なフレームを破棄します。

‘noref’

参照フレームでないフレームをすべて破棄します。

‘bidir’

双方向フレームをすべて破棄します。

‘nokey’

keyframe を除くすべてのフレームを破棄します。

‘nointra’

I フレームを除くすべてのフレームを破棄します。

‘all’

すべてのフレームを破棄します。

既定値は ‘default’ です。

bidir_refine integer (encoding,video)

双方向マクロブロックで使われる 2 つの動きベクトルを精緻化します。

keyint_min integer (encoding,video)

IDR フレーム間の最小間隔を設定します。

refs integer (encoding,video)

動き補償で考慮する参照フレームを設定します。

trellis integer (encoding,audio,video)

レート歪み最適量子化を設定します。

mv0_threshold integer (encoding,video) compression_level integer (encoding,audio,video) bits_per_raw_sample integer channel_layout integer (decoding/encoding,audio)

必要な構文については (ffmpeg-utils)the Channel Layout section in the ffmpeg-utils(1) manual を参照してください。

rc_max_vbv_use float (encoding,video) rc_min_vbv_use float (encoding,video) color_primaries integer (decoding/encoding,video)

設定できる値:

‘bt709’

BT.709

‘bt470m’

BT.470 M

‘bt470bg’

BT.470 BG

‘smpte170m’

SMPTE 170 M

‘smpte240m’

SMPTE 240 M

‘film’

Film

‘bt2020’

BT.2020

‘smpte428’ ‘smpte428_1’

SMPTE ST 428-1

‘smpte431’

SMPTE 431-2

‘smpte432’

SMPTE 432-1

‘jedec-p22’

JEDEC P22

color_trc integer (decoding/encoding,video)

設定できる値:

‘bt709’

BT.709

‘gamma22’

BT.470 M

‘gamma28’

BT.470 BG

‘smpte170m’

SMPTE 170 M

‘smpte240m’

SMPTE 240 M

‘linear’

Linear

‘log’ ‘log100’

Log

‘log_sqrt’ ‘log316’

Log square root

‘iec61966_2_4’ ‘iec61966-2-4’

IEC 61966-2-4

‘bt1361’ ‘bt1361e’

BT.1361

‘iec61966_2_1’ ‘iec61966-2-1’

IEC 61966-2-1

‘bt2020_10’ ‘bt2020_10bit’

BT.2020 - 10 bit

‘bt2020_12’ ‘bt2020_12bit’

BT.2020 - 12 bit

‘smpte2084’

SMPTE ST 2084

‘smpte428’ ‘smpte428_1’

SMPTE ST 428-1

‘arib-std-b67’

ARIB STD-B67

colorspace integer (decoding/encoding,video)

設定できる値:

‘rgb’

RGB

‘bt709’

BT.709

‘fcc’

FCC

‘bt470bg’

BT.470 BG

‘smpte170m’

SMPTE 170 M

‘smpte240m’

SMPTE 240 M

‘ycocg’

YCOCG

‘bt2020nc’ ‘bt2020_ncl’

BT.2020 NCL

‘bt2020c’ ‘bt2020_cl’

BT.2020 CL

‘smpte2085’

SMPTE 2085

‘chroma-derived-nc’

Chroma-derived NCL

‘chroma-derived-c’

Chroma-derived CL

‘ictcp’

ICtCp

color_range integer (decoding/encoding,video)

入力パラメータとして使う場合、入力がどの color_range を持つかを decoder に伝えるヒントになります。設定できる値:

‘tv’ ‘mpeg’ ‘limited’

MPEG (219*2^(n-8))

‘pc’ ‘jpeg’ ‘full’

JPEG (2^n-1)

chroma_sample_location integer (decoding/encoding,video)

設定できる値:

‘left’ ‘center’ ‘topleft’ ‘top’ ‘bottomleft’ ‘bottom’ alpha_mode integer (decoding/encoding,video)

設定できる値:

‘premultiplied’ ‘straight’ log_level_offset integer

ログレベルのオフセットを設定します。

slices integer (encoding,video)

スライス数。並列エンコードで使用します。

thread_type flags (decoding/encoding,video)

使用するマルチスレッドの方式を選択します。

‘frame’ を使うと、スレッドごとにデコード遅延が 1 フレーム増えるため、先のフレームを供給できないクライアントは使用すべきではありません。

設定できる値:

‘slice’

1 つのフレームの複数の部分を同時にデコードします。

スライスを用いるマルチスレッドは、映像がスライス付きでエンコードされている場合にのみ機能します。

‘frame’

複数のフレームを同時にデコードします。

既定値は ‘slice+frame’ です。

audio_service_type integer (encoding,audio)

音声サービスの種別を設定します。

設定できる値:

‘ma’

Main Audio Service

‘ef’

Effects

‘vi’

Visually Impaired

‘hi’

Hearing Impaired

‘di’

Dialogue

‘co’

Commentary

‘em’

Emergency

‘vo’

Voice Over

‘ka’

Karaoke

request_sample_fmt sample_fmt (decoding,audio)

音声 decoder が優先すべきサンプル形式を設定します。既定値は none です。

pkt_timebase rational number sub_charenc encoding (decoding,subtitles)

入力字幕の文字エンコーディングを設定します。

field_order field_order (video)

映像のフィールド順を設定/上書きします。設定できる値:

‘progressive’

プログレッシブ映像

‘tt’

インターレース映像、トップフィールドが先にコード化・表示される

‘bb’

インターレース映像、ボトムフィールドが先にコード化・表示される

‘tb’

インターレース映像、トップが先にコード化、ボトムが先に表示される

‘bt’

インターレース映像、ボトムが先にコード化、トップが先に表示される

skip_alpha bool (decoding,video)

アルファ(透明度)の処理を無効にするには 1 に設定します。これは flags オプションの ‘gray’ フラグと同様に動作しますが、こちらはアルファの代わりにクロマ情報をスキップします。既定値は 0 です。

codec_whitelist list (input)

許可する decoder を "," 区切りで列挙したリストです。既定ではすべて許可されます。

dump_separator string (input)

ストリームのパラメータについてコマンドラインに表示されるフィールドを区切るためのセパレータです。たとえば、フィールドを改行とインデントで区切るには次のようにします:

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg

max_pixels integer (decoding/encoding,video)

1 画像あたりの最大ピクセル数です。大きな画像によるメモリ不足の失敗を避けるために使用できます。

apply_cropping bool (decoding,video)

クロップのパラメータが、left および top パラメータについて必要なアライメントの倍数になっている場合に、クロップを有効にします。アライメントを満たさない場合、アライメントを維持するためにクロップは部分的にのみ適用されます。既定値は 1(有効)です。注意: 必要なアライメントは AV_CODEC_FLAG_UNALIGNED が設定されているかどうかと CPU に依存します。AV_CODEC_FLAG_UNALIGNED はコマンドラインから変更できません。また、ハードウェア decoder は left/top のクロップを適用しません。

3 Decoders

decoder は、マルチメディアストリームのデコードを可能にする、FFmpeg 内の構成要素です。

FFmpeg のビルドを構成する際、サポートされているネイティブな decoder はすべて既定で有効になります。外部ライブラリを必要とする decoder は、対応する --enable-lib オプションで個別に有効化する必要があります。利用可能なすべての decoder は、configure オプション --list-decoders で一覧表示できます。

すべての decoder は configure オプション --disable-decoders で無効化でき、個々の decoder はオプション --enable-decoder=DECODER / --disable-decoder=DECODER で選択的に有効化・無効化できます。

ff* ツールのオプション -decoders は、有効になっている decoder の一覧を表示します。

4 Video Decoders

現在利用可能な映像 decoder のいくつかについて説明します。

4.1 av1

AOMedia Video 1 (AV1) decoder。

4.1.1 Options

operating_point

スケーラブルな AV1 bitstream の operating point (0 - 31) を選択します。既定値は 0 です。

4.2 hevc

HEVC (別名 ITU-T H.265 または ISO/IEC 23008-2) decoder。

この decoder は、最大 2 ビューまでの MV-HEVC マルチビューストリームに対応します。出力するビューは、ビュー ID のリストを decoder に渡して選択します (view_ids オプション)。このオプションは、decoder の初期化前に静的に設定するか、get_format() コールバックから設定できます。後者は、デコード中にビュー数や ID が動的に変化する場合に便利です。

既定ではベースレイヤーのみがデコードされます。

ffmpeg CLI ツールを使用している場合は、ここで説明するオプションではなく、そのマニュアルに記載されているビュー指定子を使用してください。

4.2.1 Options

view_ids (MV-HEVC)

出力すべきビュー ID のリストを指定します。このオプションには単一の ’-1’ を設定することもでき、その場合は VPS で定義されたすべてのビューがデコード・出力されます。

view_ids_available (MV-HEVC)

呼び出し側がこのオプションを読み取ることで、現在アクティブな VPS で利用可能なビュー ID の配列を取得できます。単一レイヤーの映像では配列は空になります。

このオプションの値は、get_format() コールバックから読み取った場合は正確であることが保証されます。それ以外のタイミング (例えば decoder を開いた後) でも設定される場合がありますが、その値は参考情報にすぎず、不正確なことがあります (例えばストリームに複数の異なる VPS NALU が含まれる場合)。

view_pos_available (MV-HEVC)

呼び出し側がこのオプションを読み取ることで、現在アクティブな VPS で利用可能なビュー位置 (左、右、または未指定) の配列を AVStereo3DView 値として取得できます。配列が利用可能な場合、その要素は view_ids_available の対応する要素に適用されます。すなわち view_pos_available[i] は、ID が view_ids_available[i] のビューの位置を表します。

このオプションには view_ids_available と同じ有効性の制約が適用されます。

4.3 rawvideo

Raw video decoder。

この decoder は rawvideo ストリームをデコードします。

4.3.1 Options

top top_field_first

入力映像で想定するフィールドの種類を指定します。

-1

映像はプログレッシブと見なされます (既定)

0

ボトムフィールドファースト (bottom-field-first) と見なされます

1

トップフィールドファースト (top-field-first) と見なされます

4.4 libdav1d

dav1d AV1 decoder。

libdav1d は、libavcodec が AOMedia Video 1 (AV1) codec をデコードできるようにします。構成時に libdav1d のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libdav1d を明示的に指定する必要があります。

4.4.1 Options

libdav1d ラッパーは以下のオプションに対応します。

max_frame_delay

decoder が内部でバッファリングできるフレームの最大数を設定します。既定値は 0 (自動検出) です。

filmgrain

bitstream に含まれている場合、デコードした映像にフィルムグレインを適用します。既定値はライブラリの内部既定値です。このオプションは非推奨で、将来削除される予定です。フィルムグレインを適用する代わりにそのパラメータをエクスポートするには、グローバルオプション export_side_data を参照してください。

oppoint

スケーラブルな AV1 bitstream の operating point (0 - 31) を選択します。既定値はライブラリの内部既定値です。

alllayers

スケーラブルな AV1 bitstream のすべての空間レイヤーを出力します。既定値は false です。

4.5 libdavs2

AVS2-P2/IEEE1857.4 映像 decoder ラッパー。

この decoder は、libavcodec が davs2 ライブラリを用いて AVS2 ストリームをデコードできるようにします。

4.6 libuavs3d

AVS3-P2/IEEE1857.10 映像 decoder。

libuavs3d は、libavcodec が AVS3 ストリームをデコードできるようにします。構成時に libuavs3d のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libuavs3d を明示的に指定する必要があります。

4.6.1 Options

libuavs3d ラッパーは以下のオプションに対応します。

frame_threads

デコード中に使用するフレームスレッドの数を設定します。既定値は 0 (自動検出) です。

4.7 libxevd

eXtra-fast Essential Video Decoder (XEVD) MPEG-5 EVC decoder ラッパー。

この decoder は、構成時に libxevd のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libxevd を明示的に指定する必要があります。

xevd プロジェクトの Web サイトは https://github.com/mpeg5/xevd です。

4.7.1 Options

libxevd ラッパーは以下のオプションに対応します。移行を容易にするため、xevd における同等のオプションや値を括弧内に示しています。

libxevd オプションのより正確で網羅的なドキュメントを得るには、コマンド xevd_app --help を実行するか、libxevd のドキュメントを参照してください。

threads (threads)

使用するスレッド数を特定の値に強制します

4.8 QSV Decoders

Intel QuickSync Video decoder のファミリー (VC1、MPEG-2、H.264、HEVC、JPEG/MJPEG、VP8、VP9、AV1、VVC)。

4.8.1 Common Options

すべての qsv decoder は以下のオプションに対応します。

async_depth

内部の並列化の深さ。値が大きいほど遅延も大きくなります。

gpu_copy

映像メモリとシステムメモリ間の GPU アクセラレーションによるコピー

‘default’ ‘on’ ‘off’

4.8.2 HEVC Options

hevc_qsv 向けの追加オプション。

load_plugin

内部セッションで読み込むユーザープラグイン

‘none’ ‘hevc_sw’ ‘hevc_hw’ load_plugins

内部セッションで読み込む、16 進プラグイン UID を : 区切りで並べたリスト

4.9 v210

非圧縮 4:2:2 10-bit decoder。

4.9.1 Options

custom_stride

v210 データの行サイズをバイト単位で設定します。既定値は 0 (自動検出) です。BOXX ファイルに見られるストライドなしの v210 には、特別な値 -1 を使用できます。

5 Audio Decoders

現在利用可能な音声 decoder のいくつかについて説明します。

5.1 ac3

AC-3 音声 decoder。

この decoder は、ATSC A/52:2010 と ETSI TS 102 366 の一部、ならびに非公開仕様の RealAudio 3 (別名 dnet) を実装しています。

5.1.1 AC-3 Decoder Options

-drc_scale value

ダイナミックレンジのスケールファクター。AC-3 ストリームから得たダイナミックレンジ値に適用する係数です。この係数は指数的に適用されます。既定値は 1 です。注目すべきスケールファクターの範囲が 3 つあります。

drc_scale == 0

DRC 無効。フルレンジの音声を生成します。

0 < drc_scale <= 1

DRC 有効。ストリームの DRC 値の一部を適用します。音声の再現はフルレンジとフル圧縮の中間になります。

drc_scale > 1

DRC 有効。drc_scale を非対称に適用します。大きな音は完全に圧縮され、小さな音は強調されます。

5.2 flac

FLAC 音声 decoder。

この decoder は、Xiph による FLAC 仕様の完全な実装を目指しています。

5.2.1 FLAC Decoder options

-use_buggy_lpc

lavc の FLAC encoder は、かつて高い lpc 値 (既定値など) で不正なストリームを生成していました。このオプションは、デコードに lavc の古い不正な lpc ロジックを用いることで、そのようなストリームを正しくデコードできるようにします。

5.3 ffwavesynth

内部用のウェーブシンセサイザー。

この decoder は、あらかじめ定義されたシーケンスに従って波形パターンを生成します。用途は純粋に内部的なもので、受け付けるデータの形式は公開されていません。

5.4 libgsm

libgsm decoder ラッパー。

libgsm は、libavcodec が GSM フルレート音声 codec をデコードできるようにします。構成時に libgsm のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libgsm を明示的に指定する必要があります。

この decoder は、通常の GSM と Microsoft 版の両方に対応しています。

5.5 libilbc

libilbc decoder ラッパー。

libilbc は、libavcodec が Internet Low Bitrate Codec (iLBC) 音声 codec をデコードできるようにします。構成時に libilbc のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libilbc を明示的に指定する必要があります。

5.5.1 Options

libilbc ラッパーは以下のオプションに対応します。

enhance

1 に設定すると、デコードした音声のエンハンスメントを有効にします。既定値は 0 (無効) です。

5.6 libmpeghdec

libmpeghdec decoder ラッパー。

libmpeghdec は、libmpeghdec が MPEG-H 3D 音声 codec をデコードできるようにします。構成時に libmpeghdec のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libmpeghdec --enable-nonfree を明示的に指定する必要があります。

5.7 libopencore-amrnb

libopencore-amrnb decoder ラッパー。

libopencore-amrnb は、libavcodec が Adaptive Multi-Rate Narrowband 音声 codec をデコードできるようにします。使用するには、構成時に libopencore-amrnb のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libopencore-amrnb を明示的に指定する必要があります。

AMR-NB 用の FFmpeg ネイティブ decoder が存在するため、このライブラリがなくても AMR-NB をデコードできます。

5.8 libopencore-amrwb

libopencore-amrwb decoder ラッパー。

libopencore-amrwb は、libavcodec が Adaptive Multi-Rate Wideband 音声 codec をデコードできるようにします。使用するには、構成時に libopencore-amrwb のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libopencore-amrwb を明示的に指定する必要があります。

AMR-WB 用の FFmpeg ネイティブ decoder が存在するため、このライブラリがなくても AMR-WB をデコードできます。

5.9 libopus

libopus decoder ラッパー。

libopus は、libavcodec が Opus Interactive Audio Codec をデコードできるようにします。構成時に libopus のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libopus を明示的に指定する必要があります。

Opus 用の FFmpeg ネイティブ decoder が存在するため、このライブラリがなくても Opus をデコードできます。

6 Subtitles Decoders

6.1 libaribb24

ARIB STD-B24 字幕 decoder。

ARIB STD-B24 規格のプロファイル A と C を実装しています。

6.1.1 libaribb24 Decoder Options

-aribb24-base-path path

libaribb24 ライブラリのベースパスを設定します。これは、(カスタム Unicode 変換用の) 設定ファイルの読み込みや、テキスト以外の記号をその場所に画像としてダンプする際に利用されます。

既定では未設定です。

-aribb24-skip-ruby-text boolean

半角ルビテキストを含むテキストブロックをスキップするよう decoder ラッパーに指示します。

既定で有効です。

6.2 libaribcaption

外部の libaribcaption ライブラリを用いた、もう 1 つの ARIB STD-B24 字幕 decoder。

日本の ARIB STD-B24 規格、ブラジルの ABNT NBR 15606-1、およびフィリピン版 ISDB-T のプロファイル A と C を実装しています。

構成時に libaribcaption のヘッダーとライブラリ (https://github.com/xqq/libaribcaption) が存在している必要があります。ビルドを構成する際に --enable-libaribcaption を明示的に指定する必要があります。libaribb24libaribcaption の両方が有効な場合は、libaribcaption decoder が優先されます。

6.2.1 libaribcaption Decoder Options

-sub_type subtitle_type

デコードした字幕の形式を指定します。

‘bitmap’

グラフィカルな画像。

‘ass’

ASS 形式のテキスト。

‘text’

書式のないシンプルなテキストベースの出力。

既定値は、libaribb24 decoder と同じく ass です。一部の現行プレイヤー (例えば mpv) は、ARIB 字幕に ASS 形式を期待します。

-caption_encoding encoding_scheme

入力字幕テキストのエンコード方式を指定します。

‘auto’

テキストエンコーディングを自動検出します (既定)。

‘jis’

ARIB STD B24 で定義された 8 ビット文字の JIS エンコーディング。このエンコーディングは日本の ISDB 字幕で使用されます。

‘utf8’

ARIB STD B24 で定義された UTF-8 エンコーディング。このエンコーディングはフィリピンの ISDB-T 字幕で使用されます。

‘latin’

ABNT NBR 15606-1 で定義された Latin 文字エンコーディング。このエンコーディングは南米の SBTVD / ISDB-Tb 字幕で使用されます。

-font font_name[,font_name2,...]

bitmap または ass タイプの字幕レンダリングに使用するフォントファミリー名を、カンマ区切りのリストで指定します。ass タイプの字幕では最初のフォント名のみが使用されます。

指定しない場合は、内部で定義された既定のフォントファミリーが使用されます。

-ass_single_rect boolean

ARIB STD-B24 では、一部の字幕が同時に異なる位置に表示される場合がある (マルチ矩形字幕) と規定されています。一部のプレイヤー (例えば古い mpv) は、単一の AVSubtitle 内の複数の ASS 矩形や、同じ開始タイムスタンプを持つ持続時間が不定の複数の ASS 矩形を扱えないため、このオプションを使うとすべてのテキストを単一の ASS 矩形に表示するよう挙動を変更できます。

既定値は false です。

お使いのプレイヤーが複数の ASS 矩形を持つ AVSubtitle を正しく扱えない場合は、このオプションを true に設定するか、ASS_SINGLE_RECT=1 を定義してコンパイル時に既定の挙動を変更してください。

-force_outline_text boolean

文字スタイルの指定にかかわらず、すべての文字に対して常にアウトラインテキストをレンダリングするかどうかを指定します。

既定値は false です。

-outline_width number (0.0 - 3.0)

アウトラインテキストの幅を、ドット単位 (相対値) で指定します。

既定値は 1.5 です。

-ignore_background boolean

背景色のレンダリングを無視するかどうかを指定します。

既定値は false です。

-ignore_ruby boolean

ルビのような (ふりがな) 文字のレンダリングを無視するかどうかを指定します。

既定値は false です。

-replace_drcs boolean

置換された DRCS 文字を Unicode 文字としてレンダリングするかどうかを指定します。

既定値は true です。

-replace_msz_ascii boolean

MSZ (Middle Size; 半角) の全角英数字を半角英数字に置き換えるかどうかを指定します。

既定値は true です。

-replace_msz_japanese boolean

一部の MSZ (Middle Size; 半角) の全角日本語特殊文字を半角のものに置き換えるかどうかを指定します。

既定値は true です。

-replace_msz_glyph boolean

フォントが対応している場合に、MSZ (Middle Size; 半角) 文字を半角グリフに置き換えるかどうかを指定します。このオプションは、Adobe-Japan1 準拠フォントを用いた FreeType または DirectWrite レンダラーで機能します。例えば IBM Plex Sans JP、Morisawa BIZ UDGothic、Morisawa BIZ UDMincho、Yu Gothic、Yu Mincho、Meiryo などです。

既定値は true です。

-canvas_size image_size

字幕をレンダリングするキャンバスの解像度を指定します。通常、これは入力映像のフレームサイズとすべきです。これは -subtitle_type が bitmap に設定されている場合にのみ適用されます。

libaribcaption decoder は、bitmap レンダリングの入力フレームサイズを以下のように仮定します。

  1. PROFILE_A : 1440 x 1080、SAR (PAR) 4:3
  2. PROFILE_C : 320 x 180、SAR (PAR) 1:1

入力映像の実際のフレームサイズが上記の仮定と一致しない場合、レンダリングされた字幕が歪むことがあります。字幕を歪ませないようにするには、-canvas_size オプションを追加して実際の入力映像サイズを指定してください。

なお、サイズは異なるがアスペクト比が同じ映像では、-canvas_size オプションは不要です。その場合、-canvas_size オプションを指定しなければ、字幕は実際の映像サイズに合わせて引き伸ばしまたは縮小されます。-canvas_size オプションを異なるサイズで指定すると、字幕は計算された SAR とともに指定したサイズに引き伸ばしまたは縮小されます。

6.2.2 libaribcaption decoder usage examples

ffplay ツールで ARIB 字幕付き MPEG-TS ファイルを表示する:

ffplay -sub_type bitmap MPEG.TS

ffplay ツールで入力フレームサイズ 1920x1080 の MPEG-TS ファイルを表示する:

ffplay -sub_type bitmap -canvas_size 1920x1080 MPEG.TS

トランスコードした映像に ARIB 字幕を埋め込む:

ffmpeg -sub_type bitmap -i src.m2t -filter_complex "[0:v][0:s]overlay" -vcodec h264 dest.mp4

6.3 dvbsub

6.3.1 Options

compute_clut

-2

ストリームに一致する CLUT がない場合のみ、CLUT を一度計算します。

-1

ストリームに一致する CLUT がない場合に CLUT を計算します。

0

CLUT を一切計算しません

1

常に CLUT を計算し、ストリームに含まれるものを上書きします。

dvb_substream

dvb サブストリームを選択します。-1 (既定) の場合はすべてのサブストリームを選択します。

6.4 dvdsub

この codec は、DVD で使用されるビットマップ字幕をデコードします。同じ字幕は VobSub のファイルペアや一部の Matroska ファイルにも見られます。

6.4.1 Options

palette

ビットマップが使用するグローバルパレットを指定します。VobSub に保存される場合、パレットは通常インデックスファイルで指定されます。Matroska では、パレットは VobSub と同じ形式で codec の extra-data に保存されます。DVD では、パレットは IFO ファイルに保存されるため、ダンプされた VOB ファイルから読み取る場合は利用できません。

このオプションの形式は、カンマで区切られた 16 個の 24 ビット 16 進数 (0x プレフィックスなし) を含む文字列です。例えば 0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b のようになります。

ifo_palette

グローバルパレットの取得元となる IFO ファイルを指定します。(実験的)

forced_subs_only

forced とマークされた字幕エントリのみをデコードします。一部のタイトルでは、同じトラックに forced 字幕と非 forced 字幕が混在しています。このフラグを 1 に設定すると、forced 字幕のみが保持されます。既定値は 0 です。

6.5 libzvbi-teletext

Libzvbi は、libavcodec が DVB テレテキストページと DVB テレテキスト字幕をデコードできるようにします。構成時に libzvbi のヘッダーとライブラリが存在している必要があります。ビルドを構成する際に --enable-libzvbi を明示的に指定する必要があります。

6.5.1 Options

txt_page

デコードするテレテキストページ番号のリスト。指定したリストに一致しないページは破棄されます。すべてのページに一致させるには特別な文字列 * を、すべての字幕ページに一致させるには subtitle を使用できます。既定値は * です。

txt_default_region

デコードに使用する既定の文字セットを設定します。0 から 87 までの値です (ETS 300 706, Section 15, Table 32 を参照)。既定値は -1 で、これは libzvbi の既定を上書きしません。このオプションは、適切な文字セットを通知できない一部のレガシーなレベル 1.0 の伝送で必要になります。

txt_chop_top

テレテキストの先頭行を破棄します。既定値は 1 です。

txt_format

デコードした字幕の形式を指定します。

bitmap

既定の形式です。一部のグラフィックや色はシンプルなテキストや ASS でも表現できないため、テレテキストページにはこの形式を使用してください。

text

書式のないシンプルなテキストベースの出力。

ass

書式付きの ASS 出力。字幕ページとテレテキストページは異なるスタイルで返されます。字幕ページはテキストに簡略化されますが、テキストの配置や書式を保つよう努めます。

txt_left

生成されるビットマップの X オフセット。既定値は 0 です。

txt_top

生成されるビットマップの Y オフセット。既定値は 0 です。

txt_chop_spaces

生成されたテキストから先頭・末尾の空白を切り取り、空行を削除します。このオプションは、行頭や行末に空白が存在したり、倍角のテレテキスト文字によって字幕行の間に空行が生じたりするテレテキストベースの字幕で便利です。既定値は 1 です。

txt_duration

デコードしたテレテキストページや字幕の表示時間をミリ秒単位で設定します。既定値は -1 で、これは無限、または次の字幕イベントが来るまでを意味します。

txt_transparent

生成されるテレテキストビットマップの背景を強制的に透明にします。既定値は 0 で、これは不透明な背景を意味します。

txt_opacity

テレテキスト背景の不透明度 (0-255) を設定します。txt_transparent が設定されていない場合は、開始ボックスと終了ボックスの間の文字 (一般的には字幕) にのみ影響します。既定値は、txt_transparent が設定されている場合は 0、そうでない場合は 255 です。

7 Encoders

encoder は、マルチメディアストリームのエンコードを可能にする、FFmpeg 内の構成要素です。

FFmpeg のビルドを構成する際、サポートされているネイティブな encoder はすべて既定で有効になります。外部ライブラリを必要とする encoder は、対応する --enable-lib オプションで個別に有効化する必要があります。利用可能なすべての encoder は、configure オプション --list-encoders で一覧表示できます。

すべての encoder は configure オプション --disable-encoders で無効化でき、個々の encoder はオプション --enable-encoder=ENCODER / --disable-encoder=ENCODER で選択的に有効化・無効化できます。

ff* ツールのオプション -encoders は、有効になっている encoder の一覧を表示します。

8 Audio Encoders

現在利用可能な音声 encoder のいくつかについて説明します。

8.1 aac

Advanced Audio Coding (AAC) encoder。

この encoder は既定の AAC encoder で、FFmpeg にネイティブに実装されています。

8.1.1 Options

b

ビットレートを bits/s 単位で設定します。これを設定すると、自動的に固定ビットレート (CBR) モードが有効になります。このオプションを指定しない場合は 128kbps に設定されます。

q

可変ビットレート (VBR) モードの品質を設定します。このオプションは ffmpeg コマンドラインツールを使用する場合にのみ有効です。ライブラリインターフェイスの利用者は global_quality を使用してください。

cutoff

カットオフ周波数を設定します。指定しない場合、encoder が低ビットレートでの明瞭さを改善するためにカットオフを動的に調整できるようになります。

aac_coder

AAC encoder の符号化方式を設定します。指定可能な値:

‘twoloop’

二重ループ探索 (TLS) 法。これが既定の方式です。

この方式は、まずバンドの閾値に応じて量子化器を設定し、その後すべての量子化器に特定の値を加減したり、一部の個々の量子化器を少しずつ調整したりして、最適な組み合わせを見つけようとします。aac_is、aac_ms、aac_pns が有効かどうかに応じて自動的にチューニングします。

‘anmr’

平均雑音マスク比 (ANMR) のトレリスベースの解法。

これは実験的な符号化方式で、現状では既定の twoloop よりも品質が低く、不安定で、低速ですが、将来性があります。現在のところ aac_is や aac_pns オプションには対応していません。現時点では推奨されません。

‘fast’

定量子化器方式。

twoloop アルゴリズムの簡易版を使用し、巧妙な調整をあまり行いません。低ビットレート (64kbps 未満) では劣りますが、高ビットレートではより良好で、はるかに高速です。

aac_ms

mid/side 符号化モードを設定します。既定値の "auto" は、その符号化の恩恵を受けるバンドに対して自動的に M/S を使用します。"enable" の値ですべてのバンドに強制でき、これは主にデバッグに役立ちます。"disable" で無効にもできます。

aac_is

インテンシティステレオ符号化ツールの使用を設定します。既定では有効で、有益な場合に類似したステレオバンドのペアに対して IS を自動的に切り替えます。デバッグ用に値を "disable" にして無効化できます。

aac_pns

知覚的雑音置換を用いて、デコード処理中に低エントロピーの高周波バンドを知覚できないホワイトノイズに置き換えます。既定では有効ですが、デバッグ目的で "disable" を使用して無効化できます。

aac_tns

高周波バンド全体にわたるマルチタップ FIR フィルタの使用を有効にします。これはエンコード処理中に量子化ノイズを隠し、decoder で元に戻されます。高域の不快なアーティファクトを減らすのに加えて、高バンドのエントロピーも減らし、中低バンドでより多くのビットを使えるようにします。既定では有効ですが、オプションを "disable" に設定するとデバッグ用に無効化できます。

aac_ltp

長期予測拡張の使用を有効にします。これは、バンド内の一定の調和ピークをフレーム間で延長することで、音声やソロピアノ音楽のエンコードなど、極めて低帯域幅の状況での符号化効率を高めます。このオプションは profile:a aac_low で暗黙的に有効になります。サンプリングレートを下げるには -ar と併用してください。

profile

エンコードプロファイルを設定します。指定可能な値:

‘aac_low’

既定値。AAC の "Low-complexity" プロファイル。最も互換性が高く、まずまずの品質を生成します。

‘mpeg2_aac_low’

-profile:a aac_low -aac_pns 0 と同等です。PNS は MPEG4 仕様で導入されました。

‘aac_ltp’

長期予測プロファイル。aac_ltp オプションによって有効になり、また aac_ltp オプションを有効にします。MPEG4 で導入されました。

このオプションを指定しない場合は ‘aac_low’ に設定されます。

8.2 ac3 and ac3_fixed

AC-3 音声 encoder。

これらの encoder は、ATSC A/52:2010 と ETSI TS 102 366 の一部を実装しています。

ac3 encoder は浮動小数点演算を使用し、ac3_fixed encoder は固定小数点整数演算のみを使用します。これは一方が常に高速であることを意味するのではなく、特定のシステムにどちらか一方がより適している場合があるということです。ac3_fixed encoder はどの出力フォーマットでも既定の codec ではないため、使用するにはオプション -acodec ac3_fixed で明示的に指定する必要があります。

8.2.1 AC-3 Metadata

AC-3 メタデータオプションは、音声を記述するパラメータを設定するために使用されますが、多くの場合は音声のエンコード自体には影響しません。一部のオプションは、生成される bitstream のデコードや再生に直接影響または作用しますが、他のオプションは単なる情報提供のためのものです。一部のオプションは、本来は音声データに使えるビットを出力ストリームに追加するため、出力の品質に影響します。それらは、以下のオプション一覧で注記によって示されます。

これらのパラメータは、いくつかの公開ドキュメントで詳しく説明されています。

8.2.1.1 Metadata Control Options

-per_frame_metadata boolean

フレームごとのメタデータを許可します。encoder がフレームごとにメタデータの変化を確認すべきかどうかを指定します。

0

初期化時に設定したメタデータ値が、ストリーム内のすべてのフレームに使用されます。(既定)

1

各フレームのエンコード前にメタデータ値を変更できます。

8.2.1.2 Downmix Levels

-center_mixlev level

センターミックスレベル。ステレオへダウンミックスする際に、decoder がセンターチャンネルに適用すべきゲインの量です。このフィールドは、センターチャンネルが存在する場合にのみ bitstream に書き込まれます。値はスケールファクターとして指定します。有効な値は 3 つあります:

0.707

-3dB のゲインを適用します

0.595

-4.5dB のゲインを適用します (既定)

0.500

-6dB のゲインを適用します

-surround_mixlev level

サラウンドミックスレベル。ステレオへダウンミックスする際に、decoder がサラウンドチャンネルに適用すべきゲインの量です。このフィールドは、1 つ以上のサラウンドチャンネルが存在する場合にのみ bitstream に書き込まれます。値はスケールファクターとして指定します。有効な値は 3 つあります:

0.707

-3dB のゲインを適用します

0.500

-6dB のゲインを適用します (既定)

0.000

サラウンドチャンネルを無音にします

8.2.1.3 Audio Production Information

Audio Production Information はミキシング環境を記述する任意の情報です。これらのフィールドは両方とも書き込まれるか、まったく書き込まれないかのいずれかになります。

-mixing_level number

Mixing Level。マスタリング時の制作環境におけるピーク音圧レベル(SPL)を指定します。有効な値は 80 から 111、不明または未指定の場合は -1 です。既定値は -1 ですが、Audio Production Information を bitstream に書き込む場合はその値を使えません。したがって、room_type オプションが既定値でない場合、mixing_level オプションは -1 にしてはなりません。

-room_type type

Room Type。スタジオでの最終ミキシングセッションやダビングステージで用いたイコライゼーションを記述します。large(大きな部屋)は業界標準の X カーブイコライゼーションを使うダビングステージ、small(小さな部屋)はフラットなイコライゼーションです。mixing_level オプションと room_type オプションの両方が既定値の場合、このフィールドは bitstream に書き込まれません。

0 notindicated

Not Indicated(既定値)

1 large

Large Room

2 small

Small Room

8.2.1.4 Other Metadata Options

-copyright boolean

Copyright Indicator。この音声に著作権が存在するかどうかを指定します。

0 off

No Copyright Exists(既定値)

1 on

Copyright Exists

-dialnorm value

Dialogue Normalization。プログラムの平均ダイアログレベルがデジタルの 100% フルスケール(0 dBFS)からどれだけ低いかを示します。このパラメータは音声再生時のレベルシフトを決定し、ダイアログの平均音量をあらかじめ設定したレベルに合わせます。目的はプログラムソース間で音量レベルをそろえることです。-31dB の値にすると、音声再生時にソース音量に対して音量レベルの変化が生じません。有効な値は -31 から -1 の範囲の整数で、既定値は -31 です。

-dsur_mode mode

Dolby Surround Mode。ステレオ信号が Dolby Surround(Pro Logic)を使うかどうかを指定します。このフィールドは音声ストリームがステレオの場合にのみ bitstream に書き込まれます。このオプションを使っても、encoder が実際に Dolby Surround 処理を適用するわけではありません

0 notindicated

Not Indicated(既定値)

1 off

Not Dolby Surround Encoded

2 on

Dolby Surround Encoded

-original boolean

Original Bit Stream Indicator。この音声がコピーではなくオリジナルソースのものかどうかを指定します。

0 off

Not Original Source

1 on

Original Source(既定値)

8.2.2 Extended Bitstream Information

拡張 bitstream オプションは、A/52:2010 標準の Annex D で規定された Alternate Bit Stream Syntax の一部です。2 つのパートに分かれています。あるグループ内のパラメータが 1 つでも指定されると、そのグループのすべての値が bitstream に書き込まれます。書き込まれるが指定されていない値には既定値が用いられます。ミキシングレベルが書き込まれた場合、Alternate Bit Stream Syntax をサポートする decoder は、center_mixlev および surround_mixlev オプションで指定された値の代わりにこれらの値を使います。

8.2.2.1 Extended Bitstream Information - Part 1

-dmix_mode mode

Preferred Stereo Downmix Mode。優先するステレオダウンミックスモードとして Lt/Rt(Dolby Surround)または Lo/Ro(通常のステレオ)のいずれかを選択できます。

0 notindicated

Not Indicated(既定値)

1 ltrt

Lt/Rt Downmix Preferred

2 loro

Lo/Ro Downmix Preferred

-ltrt_cmixlev level

Lt/Rt Center Mix Level。Lt/Rt モードでステレオにダウンミックスする際、decoder がセンターチャンネルに適用すべきゲインの量です。

1.414

Apply +3dB gain

1.189

Apply +1.5dB gain

1.000

Apply 0dB gain

0.841

Apply -1.5dB gain

0.707

Apply -3.0dB gain

0.595

Apply -4.5dB gain(既定値)

0.500

Apply -6.0dB gain

0.000

Silence Center Channel

-ltrt_surmixlev level

Lt/Rt Surround Mix Level。Lt/Rt モードでステレオにダウンミックスする際、decoder がサラウンドチャンネルに適用すべきゲインの量です。

0.841

Apply -1.5dB gain

0.707

Apply -3.0dB gain

0.595

Apply -4.5dB gain

0.500

Apply -6.0dB gain(既定値)

0.000

Silence Surround Channel(s)

-loro_cmixlev level

Lo/Ro Center Mix Level。Lo/Ro モードでステレオにダウンミックスする際、decoder がセンターチャンネルに適用すべきゲインの量です。

1.414

Apply +3dB gain

1.189

Apply +1.5dB gain

1.000

Apply 0dB gain

0.841

Apply -1.5dB gain

0.707

Apply -3.0dB gain

0.595

Apply -4.5dB gain(既定値)

0.500

Apply -6.0dB gain

0.000

Silence Center Channel

-loro_surmixlev level

Lo/Ro Surround Mix Level。Lo/Ro モードでステレオにダウンミックスする際、decoder がサラウンドチャンネルに適用すべきゲインの量です。

0.841

Apply -1.5dB gain

0.707

Apply -3.0dB gain

0.595

Apply -4.5dB gain

0.500

Apply -6.0dB gain(既定値)

0.000

Silence Surround Channel(s)

8.2.2.2 Extended Bitstream Information - Part 2

-dsurex_mode mode

Dolby Surround EX Mode。ストリームが Dolby Surround EX(7.1 を 5.1 にマトリクス化したもの)を使うかどうかを示します。このオプションを使っても、encoder が実際に Dolby Surround EX 処理を適用するわけではありません

0 notindicated

Not Indicated(既定値)

1 on

Dolby Surround EX Off

2 off

Dolby Surround EX On

-dheadphone_mode mode

Dolby Headphone Mode。ストリームが Dolby Headphone エンコード(マルチチャンネルをヘッドフォン用に 2.0 にマトリクス化したもの)を使うかどうかを示します。このオプションを使っても、encoder が実際に Dolby Headphone 処理を適用するわけではありません

0 notindicated

Not Indicated(既定値)

1 on

Dolby Headphone Off

2 off

Dolby Headphone On

-ad_conv_type type

A/D Converter Type。音声が HDCD の A/D 変換を経たかどうかを示します。

0 standard

Standard A/D Converter(既定値)

1 hdcd

HDCD A/D Converter

8.2.3 Other AC-3 Encoding Options

-stereo_rematrixing boolean

Stereo Rematrixing。ステレオ入力に対する rematrixing の使用を有効/無効にします。これは任意の AC-3 機能で、left/right チャンネルを選択的に mid/side としてエンコードすることで品質を高めます。このオプションは既定で有効であり、テスト目的を除いて有効のままにしておくことを強く推奨します。

cutoff frequency

ローパスのカットオフ周波数を設定します。未指定の場合、encoder は他のさまざまなエンコードパラメータに基づいて既定値を選択します。

8.2.4 Floating-Point-Only AC-3 Encoding Options

これらのオプションは浮動小数点 encoder でのみ有効で、固定小数点 encoder には対応機能が実装されていないため存在しません。

-channel_coupling boolean

channel coupling の使用を有効/無効にします。これは任意の AC-3 機能で、複数チャンネルの高周波情報を 1 つのチャンネルにまとめることで品質を高めます。チャンネルごとの高周波情報は、周波数領域・時間領域の両方で精度を落として送られます。これにより、高周波を再構成するのに十分な情報を保ちつつ、低周波により多くのビットを割り当てられます。このオプションは浮動小数点 encoder では既定で有効であり、テスト目的やエンコード速度を上げる場合を除いて、通常は有効のままにすべきです。

-1 auto

Selected by Encoder(既定値)

0 off

Disable Channel Coupling

1 on

Enable Channel Coupling

-cpl_start_band number

Coupling Start Band。channel coupling の開始バンドを 1 から 15 で設定します。帯域幅より大きい値を指定すると、coupling 終了バンドより 1 小さい値に減らされます。auto を指定すると、開始バンドはビットレート・サンプリングレート・チャンネルレイアウトに基づいて encoder が決定します。channel coupling が無効の場合、このオプションは効果がありません。

-1 auto

Selected by Encoder(既定値)

8.3 flac

FLAC(Free Lossless Audio Codec)Encoder

8.3.1 Options

FFmpeg の flac encoder は次のオプションをサポートします。

compression_level

圧縮レベルを設定します。明示的に設定されていない他の多くのオプションの既定値はこの値に応じて選ばれます。有効な値は 0 から 12 で、既定値は 5 です。

frame_size

フレームのサイズをチャンネルあたりのサンプル数で設定します。

lpc_coeff_precision

LPC 係数の精度を設定します。有効な値は 1 から 15 で、既定値は 15 です。

lpc_type

第 1 段の LPC アルゴリズムを設定します。

‘none’

LPC を使いません

‘fixed’

固定 LPC 係数

‘levinson’ ‘cholesky’ lpc_passes

LPC 解析時に Cholesky 分解で使うパス数です。

min_partition_order

最小パーティションオーダーです。

max_partition_order

最大パーティションオーダーです。

prediction_order_method

‘estimation’ ‘2level’ ‘4level’ ‘8level’ ‘search’

総当たり探索

‘log’ ch_mode

チャンネルモードです。

‘auto’

モードがフレームごとに自動で選ばれます

‘indep’

チャンネルが独立してコーディングされます

‘left_side’ ‘right_side’ ‘mid_side’ exact_rice_parameters

rice パラメータを正確に計算するか、近似で計算するかを選びます。1 に設定すると正確に選ばれ、コードはわずかに遅くなりますが圧縮率がわずかに改善します。

multi_dim_quant

Multi Dimensional Quantization。1 に設定すると、第 1 段の後に第 2 段の LPC アルゴリズムを適用して係数を微調整します。これはかなり遅く、圧縮率がわずかに改善します。

8.4 opus

Opus encoder。

これは Opus フォーマット向けの FFmpeg ネイティブ encoder です。現在は開発中で、codec のうち CELT 部分のみを実装しています。品質は通常 libopus encoder より劣り、よくても同等です。

8.4.1 Options

b

ビットレートを bits/s で設定します。未指定の場合、チャンネル数とレイアウトを用いて適切な値を推測します。

opus_delay

最大遅延をミリ秒で設定します。20ms より低い遅延にすると、品質が急速に低下します。

8.5 libfdk_aac

libfdk-aac AAC(Advanced Audio Coding)encoder のラッパーです。

libfdk-aac ライブラリは Android プロジェクト由来の Fraunhofer FDK AAC コードに基づいています。

configuration 時に libfdk-aac のヘッダとライブラリが必要です。ビルドを --enable-libfdk-aac で明示的に configure する必要があります。このライブラリは GPL とも非互換なので、GPL の使用を許可する場合は --enable-gpl --enable-nonfree --enable-libfdk-aac で configure してください。

この encoder は AAC-HE プロファイルをサポートします。

vbr オプションまたは flags +qscale オプションで有効化する VBR エンコードは実験的で、一部のパラメータの組み合わせでのみ動作します。

7.1 音声のエンコードのサポートは libfdk-aac 0.1.3 以降でのみ利用できます。

詳細は fdk-aac プロジェクト http://sourceforge.net/p/opencore-amr/fdk-aac/ を参照してください。

8.5.1 Options

次のオプションは共有 FFmpeg codec オプションにマッピングされています。

b

ビットレートを bits/s で設定します。ビットレートを明示的に指定しない場合、選択したプロファイルに応じて適切な値に自動設定されます。

VBR モードが有効な場合、このオプションは無視されます。

ar

音声のサンプリングレート(Hz)を設定します。

channels

音声チャンネル数を設定します。

flags +qscale

固定品質の VBR(Variable Bit Rate)モードを有効にします。vbr の値が正のときは VBR が暗黙的に有効になる点に注意してください。

cutoff

カットオフ周波数を設定します。未指定(または明示的に 0 を設定)の場合、ライブラリが自動計算した値を使います。既定値は 0 です。

profile

音声プロファイルを設定します。

次のプロファイルが認識されます。

‘aac_low’

Low Complexity AAC(LC)

‘aac_he’

High Efficiency AAC(HE-AAC)

‘aac_he_v2’

High Efficiency AAC version 2(HE-AACv2)

‘aac_ld’

Low Delay AAC(LD)

‘aac_eld’

Enhanced Low Delay AAC(ELD)

未指定の場合は ‘aac_low’ に設定されます。

次は libfdk_aac encoder のプライベートオプションです。

afterburner

1 に設定すると afterburner 機能を有効に、0 で無効にします。これは品質を高めますが、必要な処理能力も増えます。

既定値は 1 です。

eld_sbr

1 に設定すると ELD 向けの SBR(Spectral Band Replication)を有効に、0 で無効にします。

既定値は 0 です。

eld_v2

1 に設定すると ELDv2(ELD ステレオ信号向けの LD-MPS 拡張)を有効に、0 で無効にします。

このオプションは fdk-aac のバージョン(AACENCODER_LIB_VL0.AACENCODER_LIB_VL1.AACENCODER_LIB_VL2)が (4.0.0) より大きい場合に利用できる点に注意してください。

既定値は 0 です。

signaling

SBR/PS シグナリングのスタイルを設定します。

次のいずれかの値を取れます。

‘default’

シグナリングを暗黙的に選びます(既定では explicit hierarchical、global header が無効の場合は implicit)

‘implicit’

implicit な後方互換シグナリング

‘explicit_sbr’

explicit SBR、implicit PS シグナリング

‘explicit_hierarchical’

explicit hierarchical シグナリング

既定値は ‘default’ です。

latm

1 に設定すると LATM/LOAS でカプセル化したデータを出力し、0 で無効にします。

既定値は 0 です。

header_period

LATM/LOAS トランスポート層内で帯域内の構成バッファを送るための、StreamMuxConfig と PCE の繰り返し周期(フレーム単位)を設定します。

16 ビットの非負整数でなければなりません。

既定値は 0 です。

vbr

VBR モードを 1 から 5 で設定します。1 が最低品質(それでもかなり良好)、5 が最高品質です。0 にすると VBR が無効になり、CBR(Constant Bit Rate)が有効になります。

現在 VBR エンコードをサポートするのは ‘aac_low’ プロファイルのみです。

VBR モード 1〜5 はおおよそ次の平均ビットレートに対応します。

‘1’

32 kbps/channel

‘2’

40 kbps/channel

‘3’

48-56 kbps/channel

‘4’

64 kbps/channel

‘5’

about 80-96 kbps/channel

既定値は 0 です。

frame_length

音声フレーム長をサンプル数で設定します。既定値はライブラリの内部既定値です。サポートされる値についてはライブラリのドキュメントを参照してください。

8.5.2 Examples

  • ffmpeg を使って音声ファイルを M4A(MP4)コンテナの VBR AAC に変換する:

    ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
    
  • ffmpeg を使って、High-Efficiency AAC プロファイルで音声ファイルを CBR 64k kbps の AAC に変換する:

    ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
    

8.6 liblc3

liblc3 LC3(Low Complexity Communication Codec)encoder のラッパーです。

configuration 時に liblc3 のヘッダとライブラリが必要です。ビルドを --enable-liblc3 で明示的に configure する必要があります。

この encoder は LE Audio プロトコル向けの Bluetooth SIG LC3 codec、および LC3plus の次の機能をサポートします。

  • 2.5ms および 5ms のフレーム長。
  • High-Resolution モード、48 KHz および 96 kHz のサンプリングレート。

詳細は liblc3 プロジェクト https://github.com/google/liblc3 を参照してください。

8.6.1 Options

次のオプションは共有 FFmpeg codec オプションにマッピングされています。

b bitrate

ビットレートを bits/s で設定します。これにより、選択したフレーム長に対するエンコード済みフレームの固定サイズが決まります。

ar frequency

音声のサンプリングレート(Hz)を設定します。

channels

音声チャンネル数を設定します。

frame_duration

音声フレーム長をミリ秒で設定します。既定値は 10ms です。指定できるフレーム長は 2.5ms、5ms、7.5ms、10ms です。LC3(Bluetooth LE Audio)は 7.5ms と 10ms、LC3plus は 2.5ms、5ms、10ms を許容します。

10ms のフレーム長は LC3 と LC3plus の両標準で利用できます。このモードでは、生成された bitstream を LC3 または LC3plus のいずれとしても参照できます。

high_resolution boolean

1 に設定すると high-resolution モードを有効にします。high-resolution モードは LC3plus のすべてのフレーム長、およびサンプリングレート 48 KHz と 96 KHz で利用できます。

encoder はより低いサンプリングレートではこのモードを自動的にオフにし、96 KHz では有効にします。

このモードは高ビットレートで優先すべきです。このモードでは音声帯域幅が常に Nyquist 周波数まで及び、帯域幅を 20 KHz に制限する 48 KHz の LC3 と対照的です。

8.7 libmp3lame

LAME(Lame Ain’t an MP3 Encoder)MP3 encoder のラッパーです。

configuration 時に libmp3lame のヘッダとライブラリが必要です。ビルドを --enable-libmp3lame で明示的に configure する必要があります。

固定小数点の MP3 encoder については libshine を参照してください。ただし品質は劣ります。

8.7.1 Options

libmp3lame ラッパーは次のオプションをサポートします。lame での対応オプションを括弧内に示します。

b (-b)

CBR または ABR 用のビットレートを bits/s で設定します。LAME の bitrate は kilobits/s で表されます。

q (-V)

VBR 用の固定品質設定を設定します。このオプションは ffmpeg コマンドラインツールでのみ有効です。ライブラリインターフェースの利用者は global_quality を使ってください。

compression_level (-q)

アルゴリズムの品質を設定します。有効な引数は 0〜9 の範囲の整数で、0 は最高品質だが最も遅く、9 は最速だが最低品質になります。

cutoff (--lowpass)

ローパスのカットオフ周波数を設定します。未指定の場合、encoder がカットオフを動的に調整します。

reservoir

1 に設定すると bit reservoir の使用を有効にします。既定値は 1 です。LAME は既定でこれを有効にしていますが、--nores オプションで上書きできます。

joint_stereo (-m j)

encoder が(フレームごとに)L/R ステレオまたは mid/side ステレオのいずれかを使えるようにします。既定値は 1 です。

abr (--abr)

1 に設定すると encoder が ABR を使えるようにします。lame の --abr が目標ビットレートを設定するのに対し、このオプションは FFmpeg に ABR を使うよう指示するだけで、ビットレートの設定は依然として b に依存します。

copyright (-c)

1 に設定すると MPEG 音声の copyright フラグを設定します。既定値は 0(無効)です。

original (-o)

1 に設定すると MPEG 音声の original フラグを設定します。既定値は 1(有効)です。

8.8 libopencore-amrnb

OpenCORE Adaptive Multi-Rate Narrowband エンコーダー。

設定時に libopencore-amrnb のヘッダーとライブラリが必要です。ビルドを --enable-libopencore-amrnb --enable-version3 で明示的に設定する必要があります。

これはモノラル専用のエンコーダーです。公式には 8000Hz のサンプリングレートのみをサポートしますが、strict を ‘unofficial’ 以下に設定すれば上書きできます。

8.8.1 Options

b

ビットレートをビット毎秒で設定します。サポートされるのは以下のビットレートのみで、それ以外を指定すると libavcodec が最も近い有効なビットレートに丸めます。

4750 5150 5900 6700 7400 7950 10200 12200 dtx

1 に設定すると不連続送信(コンフォートノイズの生成)を許可します。既定値は 0(無効)です。

8.9 libopus

libopus Opus Interactive Audio Codec エンコーダーのラッパー。

設定時に libopus のヘッダーとライブラリが必要です。ビルドを --enable-libopus で明示的に設定する必要があります。

8.9.1 Option Mapping

libopus のオプションの大半は opus-tools の opusenc ユーティリティをモデルにしています。以下は libopus ラッパーがサポートするオプションと、それに対応する opusenc のオプション(括弧内)を示す対応表です。

b (bitrate)

ビットレートを bits/s で設定します。FFmpeg の b オプションは bits/s で表しますが、opusenc の bitrate は kilobits/s で表します。

vbr (vbr , hard-cbr , and cvbr)

VBR モードを設定します。FFmpeg の vbr オプションには以下の有効な引数があり、対応する opusenc のオプションを括弧内に示します。

‘off (hard-cbr)’

固定ビットレートエンコードを使用します。

‘on (vbr)’

可変ビットレートエンコードを使用します(既定値)。

‘constrained (cvbr)’

制約付き可変ビットレートエンコードを使用します。

compression_level (comp)

エンコードアルゴリズムの複雑さを設定します。有効な値は 0〜10 の範囲の整数です。0 は最速のエンコードですが品質が低く、10 は最高品質ですがエンコードが最も遅くなります。既定値は 10 です。

frame_duration (framesize)

最大フレームサイズ、すなわち 1 フレームの長さをミリ秒単位で設定します。引数は次のいずれかちょうどの値でなければなりません。2.5, 5, 10, 20, 40, 60。フレームサイズが小さいほど低遅延になりますが、同じビットレートでは品質が下がります。20ms を超えるサイズはかなり低いビットレートのときにのみ意味があります。既定値は 20ms です。

packet_loss (expect-loss)

予想されるパケット損失率を設定します。既定値は 0 です。

fec (n/a)

インバンド前方誤り訂正を有効にします。効果を得るには packet_loss が 0 以外である必要があります。FEC の「サイドデータ」の頻度は予想されるパケット損失に比例します。既定では無効です。

application (N.A.)

想定する用途の種類を設定します。有効な値は以下のとおりです。

‘voip’

音声の明瞭度の向上を優先します。

‘audio’

入力への忠実さを優先します(既定値)。

‘lowdelay’

音声最適化モードを無効化し、最も遅延の小さいモードのみに制限します。

cutoff (N.A.)

カットオフ帯域幅を Hz で設定します。引数は 4000, 6000, 8000, 12000, 20000 のいずれかちょうどの値でなければならず、それぞれ narrowband、mediumband、wideband、super wideband、fullband に対応します。既定値は 0(カットオフ無効)です。なお libopus は、CELT のみ(application を ‘lowdelay’ に設定)のモードを使わない限り、15 kbps 未満のビットレートでは wideband のカットオフを強制します。

mapping_family (mapping_family)

エンコーダーが使用するチャンネルマッピングファミリーを設定します。既定値の -1 では、モノラルおよびステレオ入力には mapping family 0 を、それ以外には mapping family 1 を使用します。既定ではさらに libopus のサラウンドマスキングと LFE 帯域幅の最適化を無効にし、入力のチャンネル数が 8 以下であることを要求します。

その他の値には、モノラルとステレオ向けの 0、マスキングと LFE 帯域幅最適化を伴うサラウンドサウンド向けの 1、未指定のチャンネルレイアウトを持つ独立ストリーム向けの 255 があります。

dtx (N.A.)

1 に設定すると不連続送信を許可します。既定値は 0(無効)です。

apply_phase_inv (N.A.) (requires libopus >= 1.2)

0 に設定すると、インテンシティステレオでの位相反転の使用を無効にします。これによりモノラルダウンミックスの品質が向上しますが、通常のステレオ品質はわずかに低下します。既定値は 1(位相反転有効)です。

8.10 libshine

Shine Fixed-Point MP3 エンコーダーのラッパー。

Shine は固定小数点の MP3 エンコーダーです。armel CPU や一部のスマートフォン・タブレットなど、FPU を持たないプラットフォームではるかに優れた性能を発揮します。ただし品質よりも性能に重点を置いているため、品質面では LAME などの実用水準のエンコーダーには及びません。また、プロジェクトのホームページによれば、コードはかなり昔に書かれ、プロジェクトは少なくとも 5 年間活動が止まっていたため、このエンコーダーにはバグが残っている可能性があります。

このエンコーダーはステレオとモノラルの入力のみをサポートします。また CBR 専用です。

オリジナルのプロジェクト(最終更新は 2007 年初頭)は http://sourceforge.net/projects/libshine-fxp/ にあります。本実装がサポートするのは、Savonet/Liquidsoap プロジェクトによる更新版フォーク https://github.com/savonet/shine のみです。

設定時に libshine のヘッダーとライブラリが必要です。ビルドを --enable-libshine で明示的に設定する必要があります。

libmp3lame も参照してください。

8.10.1 Options

libshine ラッパーは以下のオプションをサポートします。対応する shineenc のオプションを括弧内に示します。

b (-b)

CBR 用のビットレートを bits/s で設定します。shineenc の -b オプションは kilobits/s で表します。

8.11 libtwolame

TwoLAME MP2 エンコーダーのラッパー。

設定時に libtwolame のヘッダーとライブラリが必要です。ビルドを --enable-libtwolame で明示的に設定する必要があります。

8.11.1 Options

libtwolame ラッパーは以下のオプションをサポートします。対応する twolame のオプションは FFmpeg のものに続けて括弧内に示します。

b (-b)

CBR 用のビットレートを bits/s で設定します。twolame の b オプションは kilobits/s で表します。既定値は 128k です。

q (-V)

実験的な VBR サポート用の品質を設定します。値の最大範囲は -50 から 50 で、実用的な範囲は -10 から 10 です。値が高いほど品質が向上します。このオプションは ffmpeg コマンドラインツールを使う場合のみ有効です。ライブラリインターフェイスの利用者は global_quality を使用してください。

mode (--mode)

出力音声のモードを設定します。指定可能な値は次のとおりです。

‘auto’

入力に基づいてモードを自動的に選択します。これが既定値です。

‘stereo’

ステレオ

‘joint_stereo’

ジョイントステレオ

‘dual_channel’

デュアルチャンネル

‘mono’

モノラル

psymodel (--psyc-mode)

エンコードに使用する心理音響モデルを設定します。引数は -1 から 4 までの整数(両端を含む)でなければなりません。値が高いほど品質が向上します。既定値は 3 です。

energy_levels (--energy)

1 に設定するとエネルギーレベル拡張を有効にします。既定値は 0(無効)です。

error_protection (--protect)

1 に設定すると CRC 誤り保護を有効にします。既定値は 0(無効)です。

copyright (--copyright)

1 に設定すると MPEG オーディオの著作権フラグを設定します。既定値は 0(無効)です。

original (--original)

1 に設定すると MPEG オーディオのオリジナルフラグを設定します。既定値は 0(無効)です。

8.12 libvo-amrwbenc

VisualOn Adaptive Multi-Rate Wideband エンコーダー。

設定時に libvo-amrwbenc のヘッダーとライブラリが必要です。ビルドを --enable-libvo-amrwbenc --enable-version3 で明示的に設定する必要があります。

これはモノラル専用のエンコーダーです。公式には 16000Hz のサンプリングレートのみをサポートしますが、strict を ‘unofficial’ 以下に設定すれば上書きできます。

8.12.1 Options

b

ビットレートを bits/s で設定します。サポートされるのは以下のビットレートのみで、それ以外を指定すると libavcodec が最も近い有効なビットレートに丸めます。

‘6600’ ‘8850’ ‘12650’ ‘14250’ ‘15850’ ‘18250’ ‘19850’ ‘23050’ ‘23850’ dtx

1 に設定すると不連続送信(コンフォートノイズの生成)を許可します。既定値は 0(無効)です。

8.13 libvorbis

libvorbis エンコーダーのラッパー。

設定時に libvorbisenc のヘッダーとライブラリが必要です。ビルドを --enable-libvorbis で明示的に設定する必要があります。

8.13.1 Options

libvorbis ラッパーは以下のオプションをサポートします。対応する oggenc のオプションを括弧内に示します。

libvorbis のオプションについてより正確で詳しい説明を得るには、libvorbisenc および oggenc のドキュメントを参照してください。http://xiph.org/vorbis/http://wiki.xiph.org/Vorbis-tools、および oggenc(1) を参照してください。

b (-b)

ABR 用のビットレートを bits/s で設定します。oggenc の -b は kilobits/s で表します。

q (-q)

VBR 用の固定品質設定を行います。値は -1.0 から 10.0 の範囲の浮動小数点数でなければなりません。値が高いほど品質が向上します。既定値は ‘3.0’ です。

このオプションは ffmpeg コマンドラインツールを使う場合のみ有効です。ライブラリインターフェイスの利用者は global_quality を使用してください。

cutoff (--advanced-encode-option lowpass_frequency=N)

カットオフ帯域幅を Hz で設定します。0 を指定するとカットオフを無効にします。oggenc の対応オプションは kHz で表します。既定値は ‘0’(カットオフ無効)です。

minrate (-m)

最小ビットレートを bits/s で設定します。oggenc の -m は kilobits/s で表します。

maxrate (-M)

最大ビットレートを bits/s で設定します。oggenc の -M は kilobits/s で表します。これは ABR モードでのみ効果があります。

iblock (--advanced-encode-option impulse_noisetune=N)

インパルスブロックのノイズフロアバイアスを設定します。値は -15.0 から 0.0 の浮動小数点数です。負のバイアスはエンコーダーに対し、エンコードされる音声の過渡音(トランジェント)の鮮明さに特別な注意を払うよう指示します。過渡応答が良くなる代償としてビットレートは高くなります。

8.14 mjpeg

Motion JPEG エンコーダー。

8.14.1 Options

huffman

ハフマン符号化の方式を設定します。指定可能な値は次のとおりです。

‘default’

既定のハフマンテーブルを使用します。これが既定の方式です。

‘optimal’

最適なハフマンテーブルを計算して使用します。

8.15 wavpack

WavPack 可逆(ロスレス)音声エンコーダー。

8.15.1 Options

wavpack コマンドラインユーティリティの対応オプションを括弧内に示します。

8.15.1.1 Shared options

このエンコーダーには以下の共有オプションが有効です。ここではこのエンコーダー固有の注記のみを記載します。オプションの一般的な意味については Codec Options の章を参照してください。

frame_size (--blocksize)

このエンコーダーでは、このオプションの範囲は 128 から 131072 です。既定値はサンプリングレートとチャンネル数に基づいて自動的に決定されます。

既定値を算出する完全な式については libavcodec/wavpackenc.c を参照してください。

compression_level (-f , -h , -hh , and -x)

8.15.1.2 Private options

joint_stereo (-j)

ジョイントステレオを有効にするかどうかを設定します。有効な値は次のとおりです。

‘on (1)’

mid/side 音声エンコードを強制します。

‘off (0)’

left/right 音声エンコードを強制します。

‘auto’

エンコーダーに自動で判断させます。

optimize_mono

モノラル向けの最適化を有効にするかどうかを設定します。このオプションはモノラル以外のストリームにのみ効果があります。指定可能な値は次のとおりです。

‘on’

有効

‘off’

無効

9 Video Encoders

現在利用できる映像エンコーダーのうち、いくつかについて以下で説明します。

9.1 a64_multi, a64_multi5

A64 / Commodore 64 マルチカラー文字セットエンコーダー。a64_multi5 は 5 番目の色(colram)が追加された拡張版です。

9.2 Cinepak

Cinepak(別名 CVID)エンコーダー。Windows 3.1 や古い MacOS と互換性があります。

9.2.1 Options

g integer

キーフレーム間隔。キーフレームは少なくとも -g フレームごとに、場合によってはそれより早く挿入されます。

q:v integer

品質係数。低いほど良好です。高いほどビットレートが下がります。以下の表は、akiyo_cif.y4m を -g 100 を付けて様々な -q:v の値でエンコードしたときのビットレートを示します。

-q:v 1 1918 kb/s -q:v 2 1735 kb/s -q:v 4 1500 kb/s -q:v 10 1041 kb/s -q:v 20 826 kb/s -q:v 40 553 kb/s -q:v 100 394 kb/s -q:v 200 312 kb/s -q:v 400 266 kb/s -q:v 1000 237 kb/s max_extra_cb_iterations integer

コードブックの再計算を追加で行う最大パス数。多いほど良好ですが遅くなります。

skip_empty_cb boolean

バイトの無駄を避けます。古い MacOS のデコーダーは無視します。

max_strips integer min_strips integer

使用するストリップ数の最小値と最大値。範囲を広げると品質が向上する場合があります。ストリップ数が多いほど一般に品質は良くなりますが、より多くのビットを消費します。ストリップ数が少ないとキーフレームが増える傾向があります。古い環境との互換性を保つには 1〜3 です。

strip_number_adaptivity integer

フレーム間でストリップ数をどの程度変化させてよいか。高いほど良好ですが遅くなります。

9.3 ffv1

FFv1 エンコーダー

9.3.1 Options

FFmpeg の FFv1 エンコーダーは以下のオプションをサポートします。

context

コンテキストサイズを設定します。0(既定)は小、1 は大です。

coder

コーダーを設定します。

‘rice’

Golomb rice コーダー

‘range_def’

既定テーブルを使う range コーダー

‘range_tab’

カスタムテーブルを使う range コーダー

slicecrc

-1(既定、自動)、1 は初期状態・最終状態を 0 とする crc を使用、2 は初期状態・最終状態を 0 以外とする crc を使用します。

qtable

‘default’

既定、自動

‘8bit’

8bit 既定を使用

‘greater8bit’

8bit 既定を使用

remap_optimizer

0〜5、既定は 3。エンコーダーが remap テーブルの最適化にどれだけ労力をかけるかを指定します。

9.4 GIF

GIF 画像/アニメーションエンコーダー。

9.4.1 Options

gifflags integer

GIF エンコードに使用するフラグを設定します。

offsetting

画像のオフセットを有効にします。

既定では有効です。

transdiff

フレーム間の透過検出を有効にします。

既定では有効です。

gifimage integer

アニメーション GIF ではなく、フレームごとに 1 枚の完全な GIF 画像をエンコードすることを有効にします。

既定値は 0 です。

global_palette integer

可能な場合はグローバル GIF ヘッダーにパレットを書き込みます。

無効にすると、グローバルパレットが指定されていても、すべてのフレームに必ずパレットが書き込まれます。

既定値は 1 です。

9.5 Hap

Vidvox Hap 映像エンコーダー。

9.5.1 Options

format integer

エンコードする Hap フォーマットを指定します。

hap hap_alpha hap_q

既定値は hap です。

chunks integer

フレームを分割するチャンク数を 1 から 64 の間で指定します。これにより大きなフレームのマルチスレッドデコードが可能になりますが、データレートを犠牲にする可能性があります。エンコーダーはフレームを均等に分割するためにこの値を変更する場合があります。

既定値は 1 です。

compressor integer

第 2 段階で使用する圧縮器を指定します。none に設定すると、非圧縮のチャンクには利点がないため、チャンクは 1 に制限されます。

none snappy

既定値は snappy です。

9.6 jpeg2000

ネイティブの jpeg 2000 エンコーダーは既定で非可逆(ロッシー)です。-q:v オプションでエンコード品質を設定できます。可逆エンコードは -pred 1 で選択できます。

9.6.1 Options

format integer

j2k または jp2(既定)のいずれかに設定でき、rgb 以外の pix_fmts を格納できるようにします。

tile_width integer

タイル幅を設定します。範囲は 1 から 1073741824 です。既定は 256 です。

tile_height integer

タイル高さを設定します。範囲は 1 から 1073741824 です。既定は 256 です。

pred integer

離散ウェーブレット変換(DWT)の種類を設定できます。

dwt97int (Lossy) dwt53 (Lossless)

既定は dwt97int です。

sop boolean

これを有効にすると、各パケットの先頭に SOP マーカーを追加します。既定では無効です。

eph boolean

これを有効にすると、各パケットヘッダーの末尾に EPH マーカーを追加します。既定では無効です。

prog integer

エンコーダーが使用するプログレッション順序を設定します。指定可能な値は次のとおりです。

lrcp rlcp rpcl pcrl cprl

既定では lrcp に設定されます。

layer_rates string

既定では、このオプションを使用しない場合、圧縮は品質メトリックを用いて行われます。このオプションを使うと圧縮率を用いた圧縮が可能になります。各レベルの圧縮率を指定できます。レイヤー l の圧縮率は、最初の l レイヤーに含まれる総ファイルサイズの割合を指定します。

使用例:

ffmpeg -i input.bmp -c:v jpeg2000 -layer_rates "100,10,1" output.j2k

これにより画像は 3 レイヤーを含むように圧縮されます。最初のレイヤーに含まれるデータは 1000 倍に圧縮され、最初の 2 レイヤーでは 100 倍に圧縮され、3 レイヤーすべてを使うとすべてのデータを含みます。

9.7 librav1e

rav1e AV1 エンコーダーのラッパー。

設定時に rav1e のヘッダーとライブラリが必要です。ビルドを --enable-librav1e で明示的に設定する必要があります。

9.7.1 Options

qmax

ビットレートモードを使用する際に用いる最大量子化値を設定します。

qmin

ビットレートモードを使用する際に用いる最小量子化値を設定します。

qp

量子化値モードを使用し、指定した量子化値(0〜255)でエンコードします。

speed

エンコードに使用する速度プリセット(0〜10)を選択します。

tiles

エンコードに使用するタイル数を選択します。

tile-rows

エンコードに使用するタイルの行数を選択します。

tile-columns

エンコードに使用するタイルの列数を選択します。

rav1e-params

":" で区切った key=value のペアのリストで rav1e のオプションを設定します。オプションの一覧は rav1e --help を参照してください。

例えば -rav1e-params で librav1e のエンコードオプションを指定するには次のようにします。

ffmpeg -i input -c:v librav1e -b:v 500K -rav1e-params speed=5:low_latency=true output.mp4

9.8 libaom-av1

libaom AV1 エンコーダーのラッパー。

設定時に libaom のヘッダーとライブラリが必要です。ビルドを --enable-libaom で明示的に設定する必要があります。

9.8.1 Options

このラッパーは以下の標準的な libavcodec オプションをサポートします。

b

ビットレートの目標値を bits/second で設定します。既定ではこれは可変ビットレートモードを使用します。maxrate と minrate も同じ値に設定すると固定ビットレートモードを使用し、それ以外で crf も設定すると制約付き品質モードを使用します。

g keyint_min

キーフレームの配置を設定します。GOP サイズはキーフレーム間の最大距離を設定します。0 の場合、出力ストリームはイントラのみになります。最小距離は GOP サイズと同じ場合を除いて無視され、同じ場合はキーフレームが常に一定間隔で現れます。既定では設定されないため、このオプションを使わない場合、ライブラリはキーフレームの配置場所を完全に自由に決められます。

qmin qmax

最小/最大量子化値を設定します。有効な範囲は 0 から 63 です(警告: これは AV1 が実際に使用する量子化値とは一致しません。実際の量子化値をこの範囲に対応づけるには 4 で割ってください)。既定は最小/最大(制約なし)です。

minrate maxrate bufsize rc_init_occupancy

レート制御のバッファリングパラメーターを設定します。設定しない場合は使用されず、既定では制約のない可変ビットレートになります。

threads

エンコード時に使用するスレッド数を設定します。指定したスレッド数を完全に活用するには、tiles または row-mt オプションも併せて設定する必要がある場合があります。既定はホストマシンがサポートするハードウェアスレッド数です。

profile

エンコードプロファイルを設定します。既定では入力のビット深度とクロマサブサンプリングに一致するプロファイルを使用します。

このラッパーには固有のオプションもいくつかあります。

cpu-used

品質とエンコード速度のトレードオフを設定します。有効な範囲は 0 から 8 で、数値が大きいほど速度が上がり品質が下がります。既定値は 1 で、これは低速・高品質になります。

auto-alt-ref

代替参照フレームの使用を有効にします。既定ではライブラリの内部既定値に従います。

arnr-max-frames (frames)

altref ノイズ低減の最大フレーム数を設定します。既定は -1 です。

arnr-strength (strength)

altref ノイズ低減フィルターの強度を設定します。範囲は -1 から 6 です。既定は -1 です。

aq-mode (aq-mode)

適応量子化モードを設定します。指定可能な値は次のとおりです。

‘none (0)’

無効。

‘variance (1)’

分散ベース。

‘complexity (2)’

複雑さベース。

‘cyclic (3)’

巡回リフレッシュ。

tune (tune)

エンコーダーをチューニングする際の歪み計測尺度を設定します。既定は psnr です。

‘psnr (0)’ ‘ssim (1)’ lag-in-frames

先読み目的でエンコーダーが同時に保持できるフレームの最大数を設定します。既定ではライブラリの内部既定値に従います。

error-resilience

誤り耐性機能を有効にします。

default

フレーム全体の損失に対する耐性を向上させます。

既定では有効ではありません。

crf

固定品質(ビットレート目標なし)モードと制約付き品質(最大ビットレート目標あり)モードでの品質とサイズのトレードオフを設定します。有効な範囲は 0 から 63 で、数値が大きいほど品質が低く、出力サイズが小さくなります。設定した場合のみ使用され、既定ではビットレート目標のみが使用されます。

static-thresh

ブロックに対する変化のしきい値を設定し、これを下回るブロックはエンコーダーによってスキップされます。任意単位の非負整数として定義され、既定は 0(ブロックはスキップされない)です。

drop-threshold

レート制御の限界に近づいたときにフレームを破棄するしきい値を設定します。目標バッファに対する割合(パーセント)として定義され、レート制御バッファがこの割合を下回ると、しきい値を超えて再び満たされるまでフレームが破棄されます。既定は 0(フレームは破棄されない)です。

denoise-noise-level (level)

グレイン合成のために除去するノイズ量。このオプションを設定しないか 0 に設定すると、グレイン合成は無効になります。

denoise-block-size (pixels)

グレイン合成のためのノイズ除去に使用するブロックサイズ。設定しない場合、AV1 コーデックは既定値の 32 を使用します。

undershoot-pct (pct)

目標ビットレートに対するデータレートのアンダーシュート(最小)の割合を設定します。範囲は -1 から 100 です。既定は -1 です。

overshoot-pct (pct)

目標ビットレートに対するデータレートのオーバーシュート(最大)の割合を設定します。範囲は -1 から 1000 です。既定は -1 です。

minsection-pct (pct)

GOP ビットレートの目標ビットレートからの最小変動率。minsection-pct を設定しない場合、libaomenc ラッパーは次のように算出します。(minrate * 100 / bitrate)。範囲は -1 から 100 です。既定は -1(未設定)です。

maxsection-pct (pct)

GOP ビットレートの目標ビットレートからの最大変動率。maxsection-pct を設定しない場合、libaomenc ラッパーは次のように算出します。(maxrate * 100 / bitrate)。範囲は -1 から 5000 です。既定は -1(未設定)です。

frame-parallel (boolean)

フレーム並列デコード可能性機能を有効にします。既定は true です。

tiles

入力映像をエンコードするタイル数を、列 x 行として設定します。数値が大きいほどエンコードとデコードの両方で並列性が高まりますが、符号化効率が下がる場合があります。既定は入力映像のサイズに必要な最小のタイル数です(4K までのサイズでは 1x1、つまり単一タイル)。

tile-columns tile-rows

タイルの行数と列数を、その数の log2 として設定します。libvpx/VP9 との互換性のために提供されています。

row-mt (Requires libaom >= 1.0.0-759-g90a15f4f2)

行ベースのマルチスレッドを有効にします。既定では無効です。

enable-cdef (boolean)

Constrained Directional Enhancement Filter を有効にします。libaom-av1 エンコーダーは既定で CDEF を有効にします。

enable-restoration (boolean)

Loop Restoration Filter を有効にします。libaom-av1 では既定で true です。

enable-global-motion (boolean)

ブロック予測でのグローバルモーションの使用を有効にします。既定は true です。

enable-intrabc (boolean)

イントラブロック予測のブロックコピーモードを有効にします。このモードはスクリーンコンテンツに有効です。既定は true です。

enable-rect-partitions (boolean) (Requires libaom >= v2.0.0)

矩形パーティションを有効にします。既定は true です。

enable-1to4-partitions (boolean) (Requires libaom >= v2.0.0)

1:4/4:1 パーティションを有効にします。既定は true です。

enable-ab-partitions (boolean) (Requires libaom >= v2.0.0)

AB 形状パーティションを有効にします。既定は true です。

enable-angle-delta (boolean) (Requires libaom >= v2.0.0)

角度デルタイントラ予測を有効にします。既定は true です。

enable-cfl-intra (boolean) (Requires libaom >= v2.0.0)

輝度から予測するクロマイントラ予測を有効にします。既定は true です。

enable-filter-intra (boolean) (Requires libaom >= v2.0.0)

フィルターイントラ予測器を有効にします。既定は true です。

enable-intra-edge-filter (boolean) (Requires libaom >= v2.0.0)

イントラエッジフィルターを有効にします。既定は true です。

enable-smooth-intra (boolean) (Requires libaom >= v2.0.0)

スムーズイントラ予測モードを有効にします。既定は true です。

enable-paeth-intra (boolean) (Requires libaom >= v2.0.0)

イントラ予測の paeth 予測器を有効にします。既定は true です。

enable-palette (boolean) (Requires libaom >= v2.0.0)

パレット予測モードを有効にします。既定は true です。

enable-flip-idtx (boolean) (Requires libaom >= v2.0.0)

FLIPADST_DCT、DCT_FLIPADST、FLIPADST_FLIPADST、ADST_FLIPADST、FLIPADST_ADST、IDTX、V_DCT、H_DCT、V_ADST、H_ADST、V_FLIPADST、H_FLIPADST を含む拡張変換タイプを有効にします。既定は true です。

enable-tx64 (boolean) (Requires libaom >= v2.0.0)

64 点変換を有効にします。既定は true です。

reduced-tx-type-set (boolean) (Requires libaom >= v2.0.0)

縮小した変換タイプの集合を使用します。既定は false です。

use-intra-dct-only (boolean) (Requires libaom >= v2.0.0)

INTRA モードに DCT のみを使用します。既定は false です。

use-inter-dct-only (boolean) (Requires libaom >= v2.0.0)

INTER モードに DCT のみを使用します。既定は false です。

use-intra-default-tx-only (boolean) (Requires libaom >= v2.0.0)

INTRA モードに既定変換のみを使用します。既定は false です。

enable-ref-frame-mvs (boolean) (Requires libaom >= v2.0.0)

時間方向の動きベクトル予測を有効にします。既定は true です。

enable-reduced-reference-set (boolean) (Requires libaom >= v2.0.0)

単一参照および複合参照の縮小した集合を使用します。既定は false です。

enable-obmc (boolean) (Requires libaom >= v2.0.0)

obmc を有効にします。既定は true です。

enable-dual-filter (boolean) (Requires libaom >= v2.0.0)

デュアルフィルターを有効にします。既定は true です。

enable-diff-wtd-comp (boolean) (Requires libaom >= v2.0.0)

差分重み付き複合を有効にします。既定は true です。

enable-dist-wtd-comp (boolean) (Requires libaom >= v2.0.0)

距離重み付き複合を有効にします。既定は true です。

enable-onesided-comp (boolean) (Requires libaom >= v2.0.0)

片側複合を有効にします。既定は true です。

enable-interinter-wedge (boolean) (Requires libaom >= v2.0.0)

interinter ウェッジ複合を有効にします。既定は true です。

enable-interintra-wedge (boolean) (Requires libaom >= v2.0.0)

interintra ウェッジ複合を有効にします。既定は true です。

enable-masked-comp (boolean) (Requires libaom >= v2.0.0)

マスク複合を有効にします。既定は true です。

enable-interintra-comp (boolean) (Requires libaom >= v2.0.0)

interintra 複合を有効にします。既定は true です。

enable-smooth-interintra (boolean) (Requires libaom >= v2.0.0)

スムーズ interintra モードを有効にします。既定は true です。

aom-params

":" で区切った key=value のペアのリストで libaom のオプションを設定します。サポートされるオプションの一覧は aomenc --help の "AV1 Specific Options" セクションを参照してください。

例えば -aom-params で libaom のエンコードオプションを指定するには次のようにします。

ffmpeg -i input -c:v libaom-av1 -b:v 500K -aom-params tune=psnr:enable-tpl-model=1 output.mp4

9.9 liboapv

Advanced Professional Video コーデックの encoder ラッパー。

この encoder を使うには、configure 時に liboapv のヘッダとライブラリが必要です。ビルドを構成する際に --enable-liboapv を明示的に指定してください。

liboapv の encoder オプションの多くは FFmpeg のグローバルな codec オプションに対応付けられており、liboapv 固有の encoder オプションはプライベートオプションとして提供されます。

apv プロジェクトの公式サイトは https://github.com/AcademySoftwareFoundation/openapv です。

9.9.1 Options

liboapv ラッパーでは次のオプションがサポートされています。

liboapv のオプションについてより詳しい説明が必要な場合は、liboapv のドキュメントを参照してください。

preset

品質と速度のトレードオフを設定します [fastest, fast, medium, slow, placebo, default]。

qp

CQP レート制御モードでの量子化パラメータ値を設定します。

oapv-params (parse_apv_params)

liboapvenc のオプションを、":" で区切った key=value の組のリストで設定します。指定できるパラメータの一覧は liboapv encoder ユーザーガイドを参照してください。

9.10 libsvtav1

SVT-AV1 の encoder ラッパー。

configure 時に SVT-AV1 のヘッダとライブラリが必要です。ビルドを構成する際に --enable-libsvtav1 を明示的に指定してください。

9.10.1 Options

profile

エンコードの profile を設定します。

‘main’ ‘high’ ‘professional’ level

operating point の level を設定します。例: ’4.0’

hielevel

階層予測のレベルを設定します。

‘3level’ ‘4level’

これが既定値です。

tier

operating point の tier を設定します。

‘main’

これが既定値です。

‘high’ qmax

ビットレートモードを使用する際に用いる最大量子化値を設定します。

qmin

ビットレートモードを使用する際に用いる最小量子化値を設定します。

crf

crf レート制御モードで使用する constant rate factor 値(0〜63)。

qp

cqp レート制御モードで使用する量子化値を設定します(0〜63)。

sc_detection

シーンチェンジ検出を有効にします。

la_depth

先読みするフレーム数を設定します(0〜120)。

preset

品質と速度のトレードオフを 0〜13 の範囲で設定します。値が大きいほど高速ですが品質は低下します。

tile_rows

使用するタイル行数の log2 を設定します(0〜6)。

tile_columns

使用するタイル列数の log2 を設定します(0〜4)。

svtav1-params

SVT-AV1 のオプションを、":" で区切った key=value の組のリストで設定します。指定できるパラメータの一覧は SVT-AV1 encoder ユーザーガイドを参照してください。

9.11 libsvtjpegxs

SVT-JPEG-XS の encoder ラッパー。

configure 時に SVT-JPEG-XS のヘッダとライブラリが必要です。ビルドを構成する際に --enable-libsvtjpegxs を明示的に指定してください。

9.11.1 Options

decomp_v

垂直方向の分解レベルを設定します。

decomp_h

水平方向の分解レベルを設定します。

quantization

量子化アルゴリズムを設定します。

‘deadzone’ ‘uniform’ coding-signs

符号の処理方式を有効にします。

‘disable’ ‘fast’ ‘full’ coding-sigf

有意係数符号化を有効にします。

coding-vpred

垂直予測符号化を有効にします。

‘disable’ ‘no_residuals’ ‘no_coeffs’

9.12 libjxl

libjxl JPEG XL の encoder ラッパー。

configure 時に libjxl のヘッダとライブラリが必要です。ビルドを構成する際に --enable-libjxl を明示的に指定してください。

9.12.1 Options

libjxl ラッパーは次のオプションをサポートします。

distance

目標とする Butteraugli distance を設定します。これは品質の設定で、distance が小さいほど高品質になります。distance=1.0 は写真コンテンツにおいて libjpeg の Quality 90 とおおよそ同等です。distance=0.0 を指定すると真の可逆(ロスレス)エンコードになります。有効な値は 0.0 から 15.0 の範囲ですが、妥当な値が 5.0 を超えることはほとんどありません。distance=0.1 にすれば、たいていの入力で視覚的に劣化のない結果が得られます。既定値は 1.0 です。

effort

エンコードに費やす effort を設定します。effort の値を大きくすると品質がより安定し、品質と bpp の曲線も通常は改善しますが、その分より多くの CPU 時間を要します。有効な値は 1 から 9 で、既定値は 7 です。

modular

自動選択ではなく、encoder に Modular モードの使用を強制します。既定では、非可逆エンコードには VarDCT を、可逆エンコードには Modular を使用します。VarDCT は一般に非可逆エンコードでは Modular より優れていますが、可逆エンコードには対応していません。

9.13 libkvazaar

Kvazaar H.265/HEVC encoder。

configure 時に libkvazaar のヘッダとライブラリが必要です。ビルドを構成する際に --enable-libkvazaar を明示的に指定してください。

9.13.1 Options

b

映像の目標ビットレートを bit/s 単位で設定し、レート制御を有効にします。

kvazaar-params

kvazaar のパラメータを、カンマ (,) で区切った name=value の組のリストで設定します。オプションの一覧は kvazaar のドキュメントを参照してください。

9.14 libopenh264

Cisco の libopenh264 H.264/MPEG-4 AVC encoder ラッパー。

この encoder を使うには、configure 時に libopenh264 のヘッダとライブラリが必要です。ビルドを構成する際に --enable-libopenh264 を明示的に指定してください。ライブラリは pkg-config を使って検出されます。

ライブラリの詳細については http://www.openh264.org を参照してください。

9.14.1 Options

次の FFmpeg グローバルオプションが libopenh264 encoder の設定に影響します。

b

ビットレートを設定します(1 秒あたりのビット数)。

g

GOP サイズを設定します。

maxrate

最大ビットレートを設定します(1 秒あたりのビット数)。

flags +global_header

bitstream にグローバルヘッダを設定します。

slices

並列エンコードで使用する slice 数を設定します。既定値は 0 です。これは slice_mode が ‘fixed’ に設定されている場合にのみ使用されます。

loopfilter

1 に設定するとループフィルタを有効にします(既定で有効)。無効にするには 0 を設定します。

profile

profile の制約を設定します。‘main’ に設定すると CABAC を有効にします(SEncParamExt.iEntropyCodingModeFlag フラグを 1 に設定)。

max_nal_size

NAL の最大サイズをバイト単位で設定します。

allow_skip_frames

1 に設定すると、目標ビットレートに収めるためにフレームのスキップを許可します。

9.15 libtheora

libtheora Theora encoder ラッパー。

configure 時に libtheora のヘッダとライブラリが必要です。ビルドを構成する際に --enable-libtheora を明示的に指定してください。

libtheora プロジェクトの詳細については http://www.theora.org/ を参照してください。

9.15.1 Options

次のグローバルオプションは、エンコード後のストリームの品質とビットレートに影響する libtheora 内部オプションへ対応付けられています。

b

CBR(Constant Bit Rate)モードでの映像ビットレートを bit/s 単位で設定します。VBR(Variable Bit Rate)モードが有効な場合、このオプションは無視されます。

flags

qscale フラグを通じて固定品質モード(VBR)エンコードを有効にしたり、pass1 および pass2 モードを有効にしたりするために使用します。

g

GOP サイズを設定します。

global_quality

グローバルな品質を lambda 単位の整数で設定します。

VBR モードが flags +qscale で有効になっている場合にのみ意味を持ちます。この値は FF_QP2LAMBDA で割ることで QP 単位に変換され、[0〜10] の範囲にクリップされ、さらに 6.3 を掛けて libtheora 本来の範囲 [0〜63] の値になります。値が大きいほど高品質になります。

q

非負の値を設定すると VBR モードを有効にし、固定品質値を QP 単位の倍精度浮動小数点値として設定します。

この値は [0〜10] の範囲にクリップされ、さらに 6.3 を掛けて libtheora 本来の範囲 [0〜63] の値になります。

このオプションは ffmpeg コマンドラインツールを使用する場合にのみ有効です。ライブラリインターフェースの利用者は global_quality を使用してください。

9.15.2 Examples

  • ffmpeg で固定品質(VBR)エンコードを最大品質に設定する:

    ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
    
  • ffmpeg を使って CBR 1000 kbps の Theora 映像ストリームに変換する:

    ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
    

9.16 libvpx

VP8/VP9 形式を libvpx を通じてサポートします。

configure 時に libvpx のヘッダとライブラリが必要です。ビルドを構成する際に --enable-libvpx を明示的に指定してください。

9.16.1 Options

libvpx ラッパーでは次のオプションがサポートされています。移行を容易にするため、vpxenc における同等のオプションや値を括弧内に記載しています。

ドキュメントの重複を減らすため、ここではプライベートオプションと、特に注意を要する一部のオプションのみを説明します。説明のない汎用オプションについては Codec Options の章を参照してください。

libvpx のオプションについてさらに詳しいドキュメントを得るには、ffmpeg -h encoder=libvpxffmpeg -h encoder=libvpx-vp9、または vpxenc --help を実行してください。さらに詳しい情報は libvpx の API ドキュメントで入手できます。

b (target-bitrate)

ビットレートを bits/s 単位で設定します。FFmpeg の b オプションは bits/s 単位で表すのに対し、vpxenc の target-bitrate は kilobits/s 単位である点に注意してください。

g (kf-max-dist) keyint_min (kf-min-dist) qmin (min-q)

最小(最高品質)の量子化値。

qmax (max-q)

最大(最低品質)の量子化値。フレームごとに変更できます。

bufsize (buf-sz , buf-optimal-sz)

レート制御のバッファサイズを設定します(ビット単位)。vpxenc のオプションはミリ秒単位で指定しますが、libvpx ラッパーはこの値を次のように変換します: buf-sz = bufsize * 1000 / bitratebuf-optimal-sz = bufsize * 1000 / bitrate * 5 / 6

rc_init_occupancy (buf-initial-sz)

デコード開始前に rc バッファへ読み込んでおくビット数を設定します。vpxenc のオプションはミリ秒単位で指定しますが、libvpx ラッパーはこの値を次のように変換します: rc_init_occupancy * 1000 / bitrate

undershoot-pct

目標ビットレートに対するデータレートのアンダーシュート(下限)の割合を設定します。

overshoot-pct

目標ビットレートに対するデータレートのオーバーシュート(上限)の割合を設定します。

skip_threshold (drop-frame) qcomp (bias-pct) maxrate (maxsection-pct)

GOP の最大ビットレートを bits/s 単位で設定します。vpxenc のオプションは目標ビットレートに対する割合で指定しますが、libvpx ラッパーはこの値を次のように変換します: (maxrate * 100 / bitrate)

minrate (minsection-pct)

GOP の最小ビットレートを bits/s 単位で設定します。vpxenc のオプションは目標ビットレートに対する割合で指定しますが、libvpx ラッパーはこの値を次のように変換します: (minrate * 100 / bitrate)

minrate, maxrate, b end-usage=cbr

(minrate == maxrate == bitrate)

crf (end-usage=cq , cq-level) tune (tune)

‘psnr (psnr)’ ‘ssim (ssim)’ quality, deadline (deadline)

‘best’

best 品質の deadline を使用します。命名が紛らわしくかなり低速で、good よりも品質の悪い出力になることがあるため、このオプションは避けるべきです。

‘good’

good 品質の deadline を使用します。cpu-used オプションと併用すれば、速度と品質のバランスが良好です。

‘realtime’

realtime 品質の deadline を使用します。

speed, cpu-used (cpu-used)

品質と速度の比率を調整します。値が大きいほど品質を犠牲にしてエンコードを高速化します。

nr (noise-sensitivity) static-thresh

ブロックに対する変化のしきい値を設定し、これを下回るブロックは encoder によってスキップされます。

slices (token-parts)

FFmpeg の slices オプションはパーティションの総数を与えるのに対し、vpxenc の token-parts は log2(partitions) で与えられる点に注意してください。

max-intra-rate

I フレームの最大ビットレートを目標ビットレートに対する割合で設定します。0 は無制限を意味します。

force_key_frames

VPX_EFLAG_FORCE_KF

代替参照フレーム関連

auto-alt-ref

代替参照フレームの使用を有効にします(2-pass のみ)。1 より大きい値で多層の代替参照フレームを有効にします(VP9 のみ)。

arnr-maxframes

altref ノイズ低減の最大フレーム数を設定します。

arnr-type

altref ノイズ低減フィルタの種類を設定します: backward、forward、centered。

arnr-strength

altref ノイズ低減フィルタの強度を設定します。

rc-lookahead, lag-in-frames (lag-in-frames)

フレームタイプとレート制御のために先読みするフレーム数を設定します。

min-gf-interval

golden / 代替参照フレームの最小間隔を設定します(VP9 のみ)。

error-resilient

エラー耐性機能を有効にします。

sharpness integer

PSNR の低下と引き換えにシャープネスを高めます。有効な範囲は [0, 7] です。

ts-parameters

時間スケーラビリティの構成を、: で区切った key=value の組のリストで設定します。例えば、ffmpeg で時間スケーラビリティのパラメータを指定するには次のようにします:

ffmpeg -i INPUT -c:v libvpx -ts-parameters ts_number_layers=3:\
ts_target_bitrate=250,500,1000:ts_rate_decimator=4,2,1:\
ts_periodicity=4:ts_layer_id=0,2,1,2:ts_layering_mode=3 OUTPUT

以下は各パラメータの簡単な説明です。詳細は vpx/vpx_encoder.hstruct vpx_codec_enc_cfg を参照してください。

ts_number_layers

時間符号化レイヤの数。

ts_target_bitrate

各時間レイヤの目標ビットレート(kbps 単位)。(ビットレートは下位の時間レイヤを含めた値であるべきです。)

ts_rate_decimator

各時間レイヤのフレームレート間引き係数。

ts_periodicity

フレームの時間レイヤへの所属を定義するシーケンスの長さ。

ts_layer_id

フレームの時間レイヤへの所属を定義するテンプレート。

ts_layering_mode

(任意)あらかじめ定義された時間レイヤリングモードの集合から時間構造を選択します。現在は次のオプションをサポートしています。

0

時間レイヤリングのフラグを内部的に与えません。AVFramemetadata フィールドで次のキーを使って渡されるフラグに依存します。

vp8-flags

現在のフレームの参照方式を示すために encoder へ渡すフラグを設定します。詳細は vpx/vpx_encoder.hvpx_codec_encode 関数を参照してください。

temporal_id

エンコードする現在のフレームの temporal id を明示的に設定します。

2

2 つの時間レイヤ。0-1...

3

3 つの時間レイヤ。0-2-1-2...; 単一の参照フレームを使用。

4

オプション "3" と同じですが、時間周期内の 2 つの時間レイヤ 2 のフレーム間に依存関係がある点が異なります。

VP8 固有のオプション

screen-content-mode

スクリーンコンテンツモード。次のいずれか: 0(オフ)、1(スクリーン)、2(より積極的なレート制御を行うスクリーン)。

VP9 固有のオプション

lossless

可逆(ロスレス)モードを有効にします。

tile-columns

使用するタイル列数を設定します。これは log2(tile_columns) で与えられる点に注意してください。例えば、タイル列を 8 にするには tile-columns オプションを 3 に設定します。

tile-rows

使用するタイル行数を設定します。これは log2(tile_rows) で与えられる点に注意してください。例えば、タイル行を 4 にするには tile-rows オプションを 2 に設定します。

frame-parallel

フレーム並列デコードの機能を有効にします。

aq-mode

適応量子化モードを設定します(0: オフ(既定)、1: 分散、2: 複雑度、3: 周期的リフレッシュ、4: equator360)。

colorspace color-space

入力の色空間を設定します。VP9 の bitstream は次の色空間のシグナリングをサポートします:

‘rgb’ sRGB ‘bt709’ bt709 ‘unspecified’ unknown ‘bt470bg’ bt601 ‘smpte170m’ smpte170 ‘smpte240m’ smpte240 ‘bt2020_ncl’ bt2020 row-mt boolean

行ベースのマルチスレッドを有効にします。

tune-content

コンテンツの種類を設定します: default (0)、screen (1)、film (2)。

corpus-complexity

Corpus VBR モードは標準的な VBR の変種で、複雑度分布の中央値を特定のクリップやチャンクから算出するのではなく、外部から渡します。

有効な範囲は [0, 10000] です。0(既定)では標準の VBR を使用します。

enable-tpl boolean

時間依存モデルを有効にします。

ref-frame-config

フレームごとの metadata を使い、vpx/vp8cx.h の構造体 vpx_svc_ref_frame_config_t のメンバを設定することで、参照方式とフレームバッファ管理を細かく制御します。

で区切った key=value の組のリストを使用します。例えば次のようにします。

av_dict_set(&av_frame->metadata, "ref-frame-config", \ "rfc_update_buffer_slot=7:rfc_lst_fb_idx=0:rfc_gld_fb_idx=1:rfc_alt_fb_idx=2:rfc_reference_last=0:rfc_reference_golden=0:rfc_reference_alt_ref=0");

rfc_update_buffer_slot

更新するバッファスロット番号を示します。

rfc_update_last

LAST フレームを更新するかどうかを示します。

rfc_update_golden

GOLDEN フレームを更新するかどうかを示します。

rfc_update_alt_ref

ALT_REF フレームを更新するかどうかを示します。

rfc_lst_fb_idx

LAST フレームのバッファインデックス。

rfc_gld_fb_idx

GOLDEN フレームのバッファインデックス。

rfc_alt_fb_idx

ALT_REF フレームのバッファインデックス。

rfc_reference_last

LAST フレームを参照するかどうかを示します。

rfc_reference_golden

GOLDEN フレームを参照するかどうかを示します。

rfc_reference_alt_ref

ALT_REF フレームを参照するかどうかを示します。

rfc_reference_duration

フレームの継続時間を示します。

libvpx の詳細については http://www.webmproject.org/ を参照してください。

9.17 libvvenc

VVenC H.266/VVC encoder ラッパー。

この encoder を使うには、configure 時に libvvenc のヘッダとライブラリが必要です。ビルドを構成する際に --enable-libvvenc を明示的に指定してください。

VVenC プロジェクトの公式サイトは https://github.com/fraunhoferhhi/vvenc です。

9.17.1 Supported Pixel Formats

VVenC は入力として 10-bit の色空間のみをサポートします。ただし、内部(エンコード時)のビット深度は実行時に 8-bit または 10-bit に設定できます。

9.17.2 Options

b

映像の目標ビットレートを設定します。

g

GOP サイズを設定します。現在は g=1(Intra のみ)または既定値をサポートします。

preset

VVenC の preset を設定します。

levelidc

level idc を設定します。

tier

vvc の tier を設定します。

qp

固定の量子化パラメータを設定します。

subopt boolean

主観的(知覚に基づく)最適化を設定します。既定値は 1(オン)です。

bitdepth8 boolean

10bit ではなく 8bit 符号化モードを設定します。既定値は 0(オフ)です。

period

(Intra)リフレッシュ周期を秒単位で設定します。

vvenc-params

vvenc のオプションを、":" で区切った key=value の組のリストで設定します。オプションの一覧は vvencapp --fullhelp または vvencFFapp --fullhelp を参照してください。

例えば、オプションは次のように指定できます:

intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8

例えば、エンコードオプションは -vvenc-params で次のように指定できます:

ffmpeg -i input -c:v libvvenc -b 1M -vvenc-params intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8 output.mp4

9.18 libwebp

libwebp WebP 画像 encoder ラッパー

libwebp は Google による WebP 画像の公式 encoder です。非可逆(ロッシー)または可逆(ロスレス)のいずれのモードでもエンコードできます。非可逆画像は本質的に VP8 フレームをラップしたものです。可逆画像は Google が開発した別個の codec です。

9.18.1 Pixel Format

現在 libwebp は、形式と libwebp の制約により、非可逆では YUV420 のみ、可逆では RGB のみをサポートします。アルファはどちらのモードでもサポートされます。API の制約により、非可逆エンコード時に RGB が渡された場合や、可逆エンコード時に YUV が渡された場合は、libwebp の関数を使って自動的に pixel format が変換されます。これは理想的ではなく、利便性のためにのみ行われます。

9.18.2 Options

-lossless boolean

可逆(ロスレス)モードの使用を有効/無効にします。既定値は 0 です。

-compression_level integer

非可逆では、これは品質と速度のトレードオフです。値を大きくすると、与えられたサイズに対してより良い品質が得られますが、エンコード時間が増加します。可逆では、これはサイズと速度のトレードオフです。値を大きくするとサイズが小さくなりますが、エンコード時間が増加します。より具体的には、使用する追加アルゴリズムや圧縮ツールの数を制御し、それらの組み合わせを変化させます。これは libwebp の method オプションに対応します。有効な範囲は 0 から 6 で、既定値は 4 です。

-quality float

非可逆エンコードでは、これは画像の品質を制御します。可逆エンコードでは、圧縮にかける労力と時間を制御します。範囲は 0 から 100 で、既定値は 75 です。

-preset type

構成 preset。画像の一般的な種類に基づいていくつかの設定を自動的に行います。

none

preset を使用しません。

default

encoder の既定値を使用します。

picture

ポートレートや屋内撮影のようなデジタル写真

photo

自然光のある屋外写真

drawing

高コントラストの細部を持つ手描きや線画

icon

小サイズのカラフルな画像

text

テキスト風

9.19 libx264, libx264rgb

x264 H.264/MPEG-4 AVC エンコーダのラッパーです。

このエンコーダを使うには、configure 時に libx264 のヘッダとライブラリが存在している必要があります。ビルドの configure で --enable-libx264 を明示的に指定してください。

libx264 は数多くの機能をサポートしており、8x8 および 4x4 の適応空間変換、適応的な B フレーム配置、CAVLC/CABAC エントロピー符号化、インターレース(MBAFF)、ロスレスモード、ディテール保持のための psy 最適化(適応量子化、psy-RD、psy-trellis)などが含まれます。

libx264 のエンコーダオプションの多くは FFmpeg のグローバル codec オプションにマッピングされており、独自のエンコーダオプションはプライベートオプションとして提供されます。さらに x264opts と x264-params プライベートオプションを使うと、libx264 の x264_param_parse 関数が受け付ける key=value 形式の組のリストを渡せます。

x264 プロジェクトのウェブサイトは http://www.videolan.org/developers/x264.html です。

libx264rgb エンコーダは libx264 と同じですが、入力として YUV ではなくパック形式の RGB pixel format を受け付ける点が異なります。

9.19.1 Supported Pixel Formats

x264 は 8〜10 ビットの色空間をサポートします。正確なビット深度は x264 の configure 時に決まります。

9.19.2 Options

libx264 ラッパーは以下のオプションをサポートします。移行を容易にするため、対応する x264 のオプションや値を括弧内に併記しています。

ドキュメントの重複を減らすため、ここで説明するのはプライベートオプションと、特に注意が必要な一部のオプションのみです。説明のない汎用オプションについては、Codec Options の章を参照してください。

libx264 オプションのより正確で詳しいドキュメントを得るには、x264 --fullhelp コマンドを実行するか、libx264 のドキュメントを参照してください。

以下のリストでは、直接対応がある場合に限り、libavcodec での名前の後に括弧で x264 側のオプション名を示しています。

b (bitrate)

ビットレートを bits/s で設定します。FFmpeg の b オプションは bits/s で表されますが、x264 の bitrate は kilobits/s である点に注意してください。

bf (bframes)

I フレームと P フレームの間に置く B フレームの数。

g (keyint)

最大 GOP サイズ。

qmin (qpmin)

最小量子化スケール。

qmax (qpmax)

最大量子化スケール。

qdiff (qpstep)

量子化スケール間の最大差分。

qblur (qblur)

量子化曲線のぼかし。

qcomp (qcomp)

量子化曲線の圧縮係数。

refs (ref)

各 P フレームが利用できる参照フレームの数。範囲は 0〜16 です。

level (level)

値が正の場合に x264_param_t.i_level_idc の値を設定します。正でない場合は無視されます。

この値は AVCodecContext API を使って設定でき(例えば AVCodecContext の値を直接設定する)、対応するレベルにマッピングされた整数として指定します(例えば値 31 は x264_levels テーブルで定義される H.264 レベル IDC "3.1" にマッピングされます)。正でない値を設定した場合は無視されます。

あるいはプライベートオプションとして設定することもでき、その場合は AVCodecContext に設定された値を上書きします。このときは H.264 Annex A で定義されたレベル IDC 識別子(例えば "3.1")として指定する必要があります。

sc_threshold (scenecut)

シーンチェンジ検出のしきい値を設定します。

trellis (trellis)

効率を高めるために Trellis 量子化を行います。既定で有効です。

nr (nr)

ノイズ低減。

me_range (merange)

動き探索の最大範囲(ピクセル単位)。

me_method (me)

動き推定の手法を設定します。速度が速い順に並べた取り得る値は次のとおりです。

‘dia (dia)’ ‘epzs (dia)’

半径 1 のダイヤモンド探索(最速)。‘epzs’ は ‘dia’ のエイリアスです。

‘hex (hex)’

半径 2 の六角形探索。

‘umh (umh)’

不均一マルチ六角形探索。

‘esa (esa)’

全探索。

‘tesa (tesa)’

アダマール全探索(最も遅い)。

forced-idr

通常、I フレームのタイプを強制する場合、エンコーダは任意の種類の I フレームを選択できます。このオプションは IDR フレームを選択するよう強制します。

subq (subme)

サブピクセル動き推定の手法。

b_strategy (b-adapt)

適応的な B フレーム配置の判定アルゴリズム。1パス目でのみ使用します。

keyint_min (min-keyint)

最小 GOP サイズ。

coder

エントロピーエンコーダを設定します。取り得る値は次のとおりです。

‘ac’

CABAC を有効にします。

‘vlc’

CAVLC を有効にし、CABAC を無効にします。x264 の --no-cabac オプションと同じ効果になります。

cmp

整数ピクセル動き推定の比較アルゴリズムを設定します。取り得る値は次のとおりです。

‘chroma’

動き推定でクロマを有効にします。

‘sad’

動き推定でクロマを無視します。x264 の --no-chroma-me オプションと同じ効果になります。

threads (threads)

エンコードスレッドの数。

thread_type

マルチスレッド方式を設定します。取り得る値は次のとおりです。

‘slice’

スライス単位のマルチスレッド。x264 の --sliced-threads オプションと同じ効果になります。

‘frame’

フレーム単位のマルチスレッド。

flags

エンコードフラグを設定します。-cgop を設定するとクローズド GOP を無効にしてオープン GOP を有効にできます。結果は x264 の --open-gop オプションの挙動に似ています。

rc_init_occupancy (vbv-init)

VBV バッファの初期占有量。

preset (preset)

エンコードのプリセットを設定します。

tune (tune)

エンコードパラメータのチューニングを設定します。

profile (profile)

プロファイル制限を設定します。

fastfirstpass

1 に設定すると、1パス目のエンコード時に高速な設定を有効にします。0 に設定した場合は x264 の --slow-firstpass オプションと同じ効果になります。

crf (crf)

固定品質モードの品質を設定します。

crf_max (crf-max)

CRF モードにおいて、この点を超えて VBV が品質を下げるのを防ぎます。

qp (qp)

固定量子化レート制御方式のパラメータを設定します。

aq-mode (aq-mode)

AQ 方式を設定します。取り得る値は次のとおりです。

‘none (0)’

無効。

‘variance (1)’

分散 AQ(複雑度マスク)。

‘autovariance (2)’

自動分散 AQ(実験的)。

aq-strength (aq-strength)

AQ の強度を設定します。平坦な領域とテクスチャのある領域でのブロックノイズやぼやけを軽減します。

psy

1 に設定すると心理視覚的な最適化を使います。0 に設定した場合は x264 の --no-psy オプションと同じ効果になります。

psy-rd (psy-rd)

心理視覚的な最適化の強度を psy-rd:psy-trellis 形式で設定します。

rc-lookahead (rc-lookahead)

フレームタイプとレート制御のために先読みするフレーム数を設定します。

weightb

1 に設定すると B フレームの重み付き予測を有効にします。0 に設定した場合は x264 の --no-weightb オプションと同じ効果になります。

weightp (weightp)

P フレームの重み付き予測方式を設定します。取り得る値は次のとおりです。

‘none (0)’

無効。

‘simple (1)’

重み付き参照のみを有効にします。

‘smart (2)’

重み付き参照と複製の両方を有効にします。

ssim (ssim)

エンコード後に SSIM の統計を計算して表示する機能を有効にします。

intra-refresh (intra-refresh)

1 に設定すると、IDR フレームの代わりに周期的イントラリフレッシュ(Periodic Intra Refresh)を使います。

avcintra-class (class)

AVC-Intra を生成するようエンコーダを設定します。有効な値は 50、100、200 です。

bluray-compat (bluray-compat)

Blu-ray 規格に準拠するようエンコーダを設定します。これは "bluray-compat=1 force-cfr=1" を設定する省略形です。

b-bias (b-bias)

B フレームを使う頻度への影響を設定します。

b-pyramid (b-pyramid)

一部の B フレームを参照として保持する方式を設定します。取り得る値は次のとおりです。

‘none (none)’

無効。

‘strict (strict)’

厳密に階層的なピラミッド。

‘normal (normal)’

非厳密(Blu-ray 非互換)。

mixed-refs

1 に設定すると、マクロブロックごとに 1 つの参照ではなく、パーティションごとに 1 つの参照を使います。0 に設定した場合は x264 の --no-mixed-refs オプションと同じ効果になります。

8x8dct

1 に設定すると適応空間変換(high プロファイルの 8x8 変換)を有効にします。0 に設定した場合は x264 の --no-8x8dct オプションと同じ効果になります。

fast-pskip

1 に設定すると P フレームでの早期 SKIP 検出を有効にします。0 に設定した場合は x264 の --no-fast-pskip オプションと同じ効果になります。

aud (aud)

1 に設定するとアクセスユニットデリミタの使用を有効にします。

mbtree

1 に設定するとマクロブロックツリーによるレート制御を有効にします。0 に設定した場合は x264 の --no-mbtree オプションと同じ効果になります。

deblock (deblock)

ループフィルタのパラメータを alpha:beta 形式で設定します。

cplxblur (cplxblur)

QP の変動の低減量を設定します(曲線圧縮の前段)。

partitions (partitions)

考慮するパーティションをカンマ区切りの値のリストとして設定します。リストで取り得る値は次のとおりです。

‘p8x8’

8x8 の P フレームパーティション。

‘p4x4’

4x4 の P フレームパーティション。

‘b8x8’

4x4 の B フレームパーティション。

‘i8x8’

8x8 の I フレームパーティション。

‘i4x4’

4x4 の I フレームパーティション。(‘p4x4’ を有効にするには ‘p8x8’ が有効である必要があります。‘i8x8’ を有効にするには適応空間変換(8x8dct オプション)が有効である必要があります。)

‘none (none)’

どのパーティションも考慮しません。

‘all (all)’

すべてのパーティションを考慮します。

direct-pred (direct)

direct MV 予測モードを設定します。取り得る値は次のとおりです。

‘none (none)’

MV 予測を無効にします。

‘spatial (spatial)’

空間予測を有効にします。

‘temporal (temporal)’

時間予測を有効にします。

‘auto (auto)’

自動で判定します。

slice-max-size (slice-max-size)

各スライスのサイズの上限をバイト単位で設定します。指定されておらず RTP ペイロードサイズ(ps)が指定されている場合は、そちらが使われます。

stats (stats)

マルチパス統計のファイル名を設定します。

nal-hrd (nal-hrd)

HRD 情報のシグナリングを設定します(vbv-bufsize の設定が必要です)。取り得る値は次のとおりです。

‘none (none)’

HRD 情報のシグナリングを無効にします。

‘vbr (vbr)’

可変ビットレート。

‘cbr (cbr)’

固定ビットレート(MP4 container では許可されません)。

x264opts opts x264-params opts

x264 の設定を :(コロン)区切りの key=value オプションのリストで上書きします。

どちらのオプションも、引数は ":" で区切られた key=value の組のリストです。x264opts では値を省略でき、その場合は値 1 が仮定されます。

filter および psy-rd オプションのように、値自体に ":" を区切り文字として使うものでは、代わりに "," を使ってください。これらは以前から "," も受け付けていますが、なぜかドキュメント化されていません。

例えば、オプションは次のように指定できます。

level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subq=6:8x8dct=0:trellis=0

例えば ffmpeg で libx264 のエンコードオプションを指定するには次のようにします。

ffmpeg -i foo.mpg -c:v libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv

libx264 オプションの完全な一覧を得るには、x264 --fullhelp コマンドを実行するか、libx264 のドキュメントを参照してください。

a53cc boolean

クローズドキャプション(ATSC 互換形式でなければなりません)を出力に取り込みます。これを提供するのは mpeg2 と h264 のデコーダのみです。既定値は 1(オン)です。

udu_sei boolean

ユーザーデータ非登録 SEI が利用可能であれば出力に取り込みます。既定値は 0(オフ)です。

mb_info boolean

AVFrameSideData を通じて mb_info データを設定します。API から使う場合にのみ有用です。既定値は 0(オフ)です。

一般的な用途向けのエンコード用 ffpreset が提供されており、汎用のプリセットシステムで利用できます(例えば pre オプションを渡す)。

9.20 libx265

x265 H.265/HEVC エンコーダのラッパーです。

このエンコーダを使うには、configure 時に libx265 のヘッダとライブラリが存在している必要があります。ビルドの configure で --enable-libx265 を明示的に指定してください。

9.20.1 Options

b

目標とする映像ビットレートを設定します。

bf g

GOP サイズを設定します。

keyint_min

最小 GOP サイズ。

refs

各 P フレームが利用できる参照フレームの数。範囲は 1〜16 です。

preset

x265 のプリセットを設定します。

tune

x265 の tune パラメータを設定します。

profile

プロファイル制限を設定します。

crf

固定品質モードの品質を設定します。

qp

固定量子化レート制御方式のパラメータを設定します。

qmin

最小量子化スケール。

qmax

最大量子化スケール。

qdiff

量子化スケール間の最大差分。

qblur

量子化曲線のぼかし。

qcomp

量子化曲線の圧縮係数。

i_qfactor b_qfactor forced-idr

通常、I フレームのタイプを強制する場合、エンコーダは任意の種類の I フレームを選択できます。このオプションは IDR フレームを選択するよう強制します。

x265-stats

2パス統計のファイル名を指定します。-passlogfile オプションを使うと自動的に設定されます。

udu_sei boolean

ユーザーデータ非登録 SEI が利用可能であれば出力に取り込みます。既定値は 0(オフ)です。

x265-params

x265 のオプションを ":" で区切った key=value の組のリストで設定します。オプションの一覧は x265 --help を参照してください。

例えば -x265-params で libx265 のエンコードオプションを指定するには次のようにします。

ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4

9.21 libxavs2

xavs2 AVS2-P2/IEEE1857.4 エンコーダのラッパーです。

このエンコーダを使うには、configure 時に libxavs2 のヘッダとライブラリが存在している必要があります。ビルドの configure で --enable-libxavs2 を明示的に指定してください。

以下の標準的な libavcodec オプションが使われます。

  • b / bit_rate
  • g / gop_size
  • bf / max_b_frames

このエンコーダには独自の固有オプションもあります。

9.21.1 Options

lcu_row_threads

行に対する並列スレッドの数を 1 から 8 の範囲で設定します(既定値は 5)。

initial_qp

xavs2 の量子化パラメータを 1 から 63 の範囲で設定します(既定値は 34)。これは先頭フレームの初期 qp を設定するために使われます。

qp

xavs2 の量子化パラメータを 1 から 63 の範囲で設定します(既定値は 34)。これは固定 QP モードでの qp 値を設定するために使われます。

max_qp

レート制御における最大 qp を 1 から 63 の範囲で設定します(既定値は 55)。

min_qp

レート制御における最小 qp を 1 から 63 の範囲で設定します(既定値は 20)。

speed_level

スピードレベルを 0 から 9 の範囲で設定します(既定値は 0)。高いほど品質は良くなりますが遅くなります。

log_level

ログレベルを -1 から 3 の範囲で設定します(既定値は 0)。-1: なし、0: エラー、1: 警告、2: 情報、3: デバッグ。

xavs2-params

xavs2 のオプションを ":" で区切った key=value の組のリストで設定します。

例えば -xavs2-params で libxavs2 のエンコードオプションを指定するには次のようにします。

ffmpeg -i input -c:v libxavs2 -xavs2-params RdoqLevel=0 output.avs2

9.22 libxeve

eXtra-fast Essential Video Encoder (XEVE) MPEG-5 EVC エンコーダのラッパーです。移行を容易にするため、対応する xeve のオプションや値を括弧内に併記しています。

このエンコーダを使うには、configure 時に libxeve のヘッダとライブラリが存在している必要があります。ビルドの configure で --enable-libxeve を明示的に指定してください。

libxeve のエンコーダオプションの多くは FFmpeg のグローバル codec オプションにマッピングされており、独自のエンコーダオプションはプライベートオプションとして提供されます。さらに xeve-params プライベートオプションを使うと、libxeve の parse_xeve_params 関数が受け付ける key=value 形式の組のリストを渡せます。

xeve プロジェクトのウェブサイトは https://github.com/mpeg5/xeve です。

9.22.1 Options

libxeve ラッパーは以下のオプションをサポートします。移行を容易にするため、対応する xeve のオプションや値を括弧内に併記しています。

ドキュメントの重複を減らすため、ここで説明するのはプライベートオプションと、特に注意が必要な一部のオプションのみです。説明のない汎用オプションについては、Codec Options の章を参照してください。

libxeve オプションのより正確で詳しいドキュメントを得るには、xeve_app --help コマンドを実行するか、libxeve のドキュメントを参照してください。

b (bitrate)

目標とする映像ビットレートを bits/s で設定します。FFmpeg の b オプションは bits/s で表されますが、xeve の bitrate は kilobits/s である点に注意してください。

bf (bframes)

B フレームの最大数を設定します(1, 3, 7, 15)。

g (keyint)

GOP サイズ(I ピクチャの周期)を設定します。

preset (preset)

xeve のプリセットを設定します。エンコードプリセット値を設定してエンコード速度を決めます [fast, medium, slow, placebo]。

tune (tune)

エンコーダの tune パラメータを設定します [psnr, zerolatency]。

profile (profile)

エンコーダのプロファイルを設定します [0: baseline; 1: main]。

crf (crf)

固定品質モードの品質を設定します。Constant rate factor <10..49> [既定値: 32]。

qp (qp)

固定量子化レート制御方式のパラメータを設定します。量子化パラメータ qp <0..51> [既定値: 32]。

threads (threads)

使用するスレッド数を強制的に指定します。

9.23 libxvid

Xvid MPEG-4 Part 2 エンコーダのラッパーです。

このエンコーダを使うには、configure 時に libxvidcore のヘッダとライブラリが存在している必要があります。ビルドの configure で --enable-libxvid --enable-gpl を明示的に指定してください。

ネイティブの mpeg4 エンコーダが MPEG-4 Part 2 形式をサポートしているため、このライブラリがなくてもこの形式にエンコードできます。

9.23.1 Options

libxvid ラッパーは以下のオプションをサポートします。以下のオプションの一部は列挙されているだけで説明はなく、共有 codec オプションに対応します。それらの説明は Codec Options の章を参照してください。列挙されていない他の共有オプションは libxvid エンコーダでは効果がありません。

b g qmin qmax mpeg_quant threads bf b_qfactor b_qoffset flags

固有のエンコードフラグを設定します。取り得る値は次のとおりです。

‘mv4’

マクロブロックごとに 4 つの動きベクトルを使います。

‘aic’

高品質な AC 予測を有効にします。

‘gray’

グレースケールのみをエンコードします。

‘qpel’

クォーターピクセル動き補償を有効にします。

‘cgop’

クローズド GOP を有効にします。

‘global_header’

グローバルヘッダを各キーフレームではなく extradata に配置します。

gmc

グローバル動き補償(GMC)の使用を有効にします。既定値は 0(無効)です。

me_quality

動き推定の品質レベルを設定します。速度が速い順かつ品質が低い順に並べた取り得る値は次のとおりです。

‘0’

動き推定を使いません(既定値)。

‘1, 2’

16x16 ブロックに対する高度なダイヤモンドゾーン探索と、16x16 ブロックに対するハーフピクセル精緻化を有効にします。

‘3, 4’

上記すべてに加えて、8x8 ブロックに対する高度なダイヤモンドゾーン探索と、8x8 ブロックに対するハーフピクセル精緻化を有効にし、さらに P フレームと B フレームのクロマ平面に対する動き推定も有効にします。

‘5, 6’

上記すべてに加えて、拡張された 16x16 および 8x8 ブロック探索を有効にします。

mbd

マクロブロック決定アルゴリズムを設定します。品質が高い順に並べた取り得る値は次のとおりです。

‘simple’

マクロブロック比較関数アルゴリズムを使います(既定値)。

‘bits’

16x16 ブロックに対するレート歪みベースのハーフピクセルおよびクォーターピクセル精緻化を有効にします。

‘rd’

上記すべてに加えて、8x8 ブロックに対するレート歪みベースのハーフピクセルおよびクォーターピクセル精緻化と、正方パターンを使ったレート歪みベースの探索を有効にします。

lumi_aq

1 に設定すると輝度マスキングによる適応量子化を有効にします。既定値は 0(無効)です。

variance_aq

1 に設定すると分散による適応量子化を有効にします。既定値は 0(無効)です。

lumi_aq と組み合わせた場合、得られる品質は個別に指定したいずれか一方より良くなることはありません。言い換えると、得られる品質は 2 つの効果のうち悪い方になります。

trellis

レート歪み最適な量子化を設定します。

ssim

構造的類似度(SSIM)の表示方法を設定します。取り得る値は次のとおりです。

‘off’

SSIM 情報の表示を無効にします。

‘avg’

エンコード終了時に平均 SSIM を stdout に出力します。平均 SSIM の表示形式は次のとおりです。

Average SSIM: %f

C に詳しくない方のために補足すると、%f は浮動小数点数、つまり小数(例えば 0.939232)を意味します。

‘frame’

エンコード中のフレームごとの SSIM データと、エンコード終了時の平均 SSIM の両方を stdout に出力します。フレームごとの情報の形式は次のとおりです。

       SSIM: avg: %1.3f min: %1.3f max: %1.3f

C に詳しくない方のために補足すると、%1.3f は小数点以下 3 桁に丸めた浮動小数点数(例えば 0.932)を意味します。

ssim_acc

SSIM の精度を設定します。有効な値は 0〜4 の範囲の整数で、0 が最も正確な結果を与え、4 が最も高速に計算します。

9.24 MediaCodec

MediaCodec encoder ラッパーは、Android 端末でのハードウェアアクセラレーションによる映像エンコードを可能にする。H.264、H.265 (HEVC)、VP8、VP9、MPEG-4、AV1 のエンコードに対応する(実際に動作するかは端末に依存する)。

Android は Java MediaCodec と NDK MediaCodec の 2 系統の API を提供しており、MediaCodec encoder ラッパーはその両方に対応する。NDK MediaCodec API は JVM を必要とせずに動作するが、システムフレームワークのサービスに依存するため、特に Android 15 以降では JVM 環境の外で機能しないことがある点に注意してほしい。

ndk_codec boolean

Java API ではなく NDK ベースの MediaCodec API を使う。av_jni_get_java_vm() が NULL を返す場合は既定で有効になる。

ndk_async boolean

NDK MediaCodec を非同期モードで使う。非同期モードは、同期モードでループ内をポーリングする方式よりオーバーヘッドが小さい。難点は AV_CODEC_FLAG_GLOBAL_HEADER が動作しないことで、必要な場合は extract_extradata bsf を使う。Android 8.0 より前の端末では動作せず、自動的に無効化される。

codec_name string

1 つのコーデック種別が単一の端末上で複数の実装を持つことがあり、このオプションでどのバックエンドを使うかを(MediaCodec の createCodecByName API 経由で)指定する。既定値は NULL で、その場合 encoder は createEncoderByType で生成される。

bitrate_mode integer

指定できる値:

‘cq’

固定品質モード

‘vbr’

可変ビットレートモード

‘cbr’

固定ビットレートモード

‘cbr_fd’

フレームドロップ付き固定ビットレートモード

pts_as_dts boolean

PTS を DTS として使う。これは MediaCodec API がデコードのタイムスタンプを提供しないことへの回避策である。B フレームが 0 の場合は自動的に有効になる。

operating_rate integer

コーデックが動作する必要のある目標動作レート。未指定の場合は 0 にする。これは高速度撮影・スローモーション映像の収録のような用途で使われる。こうした用途では映像 encoder のフォーマットには目標再生レート(例: 30fps)が含まれるが、コンポーネントは高い収録時の動作レート(例: 240fps)を扱えなければならない。このレートはコーデックがリソース計画や動作点の設定に用いる。

qp_i_min integer

I フレームの最小量子化パラメータ。

qp_p_min integer

P フレームの最小量子化パラメータ。

qp_b_min integer

B フレームの最小量子化パラメータ。

qp_i_max integer

I フレームの最大量子化パラメータ。

qp_p_max integer

P フレームの最大量子化パラメータ。

qp_b_max integer

B フレームの最大量子化パラメータ。

9.25 MediaFoundation

MediaFoundation フレームワークの encoder に対する以下のラッパーが利用できる:

  • h264_mf
  • hevc_mf
  • av1_mf

これらはソフトウェアエンコードとハードウェアエンコードの両方に対応する。

映像 encoder は nv12 または yuv420p のいずれかの形式の入力を受け付ける(両方に対応する encoder もあれば、片方しか対応しないものもある。実際には、特にハードウェア encoder では nv12 のほうが安全な選択である)。

ハードウェアアクセラレーションによるエンコードには D3D11 が必要で、scale_d3d11 フィルタによるハードウェアスケーリング機能も含まれる。

MediaFoundation encoder で利用できるオプションをすべて一覧するには、次を使う: ffmpeg -h encoder=<encoder>。例: ffmpeg -h encoder=h264_mf

9.25.1 Options

rate_control

レート制御モードを選択する。利用できるモード:

‘default’

既定モード

‘cbr’

CBR モード

‘pc_vbr’

ピーク制約付き VBR モード

‘u_vbr’

無制約 VBR モード

‘quality’

品質モード

‘ld_vbr’

低遅延 VBR モード(Windows 8 以降が必要)

‘g_vbr’

グローバル VBR モード(Windows 8 以降が必要)

‘gld_vbr’

グローバル低遅延 VBR モード(Windows 8 以降が必要)

scenario

利用シナリオを選択する。利用できるシナリオ:

‘default’

既定シナリオ

‘display_remoting’

ディスプレイリモーティングのシナリオ

‘video_conference’

ビデオ会議のシナリオ

‘archive’

アーカイブのシナリオ

‘live_streaming’

ライブストリーミングのシナリオ

‘camera_record’

カメラ収録のシナリオ

‘display_remoting_with_feature_map’

フィーチャーマップ付きディスプレイリモーティングのシナリオ

quality

エンコード品質を設定する(0〜100)。-1 は既定の品質を意味する。

hw_encoding

ハードウェアエンコードを強制する(0〜1)。既定は 0(無効)。

9.25.2 Examples

ハードウェアエンコード:

ffmpeg -i input.mp4 -c:v h264_mf -hw_encoding 1 output.mp4

ハードウェアアクセラレーションによるデコードとハードウェアエンコード:

ffmpeg -hwaccel d3d11va -i input.mp4 -c:v h264_mf -hw_encoding 1 output.mp4

ハードウェアアクセラレーションによるデコード、ハードウェアスケーリング、品質設定付きエンコード:

ffmpeg -hwaccel d3d11va -hwaccel_output_format d3d11 -i input.mp4 -vf scale_d3d11=1920:1080 -c:v hevc_mf -hw_encoding 1 -quality 80 output.mp4

9.26 Microsoft RLE

Microsoft RLE(別名 MSRLE)encoder。8 ビットパレットモードのみ対応する。Windows 3.1 および Windows 95 と互換性がある。

9.26.1 Options

g integer

キーフレーム間隔。キーフレームは少なくとも -g フレームごと、場合によってはそれより早く挿入される。

9.27 mpeg2

MPEG-2 映像 encoder。

9.27.1 Options

profile

エンコードに使う mpeg2 のプロファイルを選択する:

‘422’ ‘high’ ‘ss’

空間スケーラブル(Spatially Scalable)

‘snr’

SNR スケーラブル

‘main’ ‘simple’ level

エンコードに使う mpeg2 のレベルを選択する:

‘high’ ‘high1440’ ‘main’ ‘low’ seq_disp_ext integer

encoder が出力に sequence_display_extension を書き込むかどうかを指定する。

-1 auto

書き込むかどうかを自動で判断する(これが既定)。書き込むデータが既定値や未指定の値と異なるかどうかを調べて決める。

0 never

書き込まない。

1 always

常に書き込む。

video_format integer

sequence display extension に書き込む video_format を指定する。これは映像の出所を示す。既定は ‘unspecified’ で、‘component’、‘pal’、‘ntsc’、‘secam’、‘mac’ を指定できる。互換性を最大化するには ‘component’ を使う。

a53cc boolean

クローズドキャプション(ATSC 互換形式である必要がある)を出力に取り込む。既定は 1(有効)。

9.28 png

PNG 画像 encoder。

9.28.1 Options

compression_level

圧縮レベルを設定する。0 から 9(既定)まで。

9.28.2 Private options

dpi integer

ピクセルの物理密度を 1 インチあたりのドット数で設定する。既定では未設定。

dpm integer

ピクセルの物理密度を 1 メートルあたりのドット数で設定する。既定では未設定。

pred method

予測方式を設定する(none, sub, up, avg, paeth, mixed)。既定は paeth。

9.29 ProRes

Apple ProRes encoder。

FFmpeg には prores-aw と prores-ks の 2 つの ProRes encoder が含まれる。使用する encoder は -vcodec オプションで選べる。

9.29.1 Private Options for prores-ks

profile integer

エンコードに使う ProRes のプロファイルを選択する

‘proxy’ ‘lt’ ‘standard’ ‘hq’ ‘4444’ ‘4444xq’ quant_mat integer

量子化行列を選択する。

‘auto’ ‘default’ ‘proxy’ ‘lt’ ‘standard’ ‘hq’

auto に設定すると、プロファイルに対応する行列が選ばれる。設定しない場合は、最高品質を得られる行列、すなわち default が選ばれる。

bits_per_mb integer

1 つのマクロブロックの符号化に割り当てるビット数。プロファイルによってマクロブロックあたり 200〜2400 ビットを使い、最大は 8000 である。

mbs_per_slice integer

各スライス内のマクロブロック数(1〜8)。既定値(8)でほとんどの状況に適している。

vendor string

4 バイトのベンダー ID を上書きする。apl0 のようなカスタムのベンダー ID を指定すると、そのストリームが Apple の encoder で生成されたものだと主張することになる。

alpha_bits integer

アルファ成分のビット数を指定する。指定できる値は 0、8、16。アルファプレーンの符号化を無効にするには 0 を使う。

9.29.2 Speed considerations

既定の動作モードでは、encoder はフレームの制約(すなわち要求されたサイズより大きいフレームを生成しないこと)を守りつつ、できるかぎり良い出力画を作らなければならない。細かいディテールを多く含むフレームは圧縮が難しく、encoder は各スライスに適した量子化器を探すのにより多くの時間を費やす。

bits_per_mb の上限を高く設定すると速度が向上する。

最速のエンコード速度を得るには、qscale パラメータを設定し(4 が推奨値)、サイズ制約を設定しないようにする。

9.30 QSV Encoders

Intel QuickSync Video encoder のファミリー(MPEG-2、H.264、HEVC、JPEG/MJPEG、VP9、AV1)

9.30.1 Ratecontrol Method

レート制御方式は次のように選択される:

  • global_quality が指定されている場合、品質ベースのモードが使われる。具体的には次のいずれかである
    • - CQP - 固定量子化スケール。qscale codec フラグも併せて設定されている場合(ffmpeg の -qscale オプション)。
    • - LA_ICQ - 先読み付きインテリジェント固定品質。look_ahead オプションも併せて設定されている場合。
    • - ICQ – それ以外の場合のインテリジェント固定品質。ICQ 系モードでは、global quality の範囲は 1〜51 で、1 が最高品質となる。
  • それ以外で、目標の平均ビットレートが b オプションで指定されている場合、ビットレートベースのモードが使われる。
    • - LA - 先読み付き VBR。look_ahead オプションが指定されている場合。
    • - VCM - ビデオ会議モード。vcm オプションが設定されている場合。
    • - CBR - 固定ビットレート。maxrate が指定され、平均ビットレートと等しい場合。
    • - VBR - 可変ビットレート。maxrate が指定され、平均ビットレートより高い場合。
    • - AVBR - 平均 VBR モード。maxrate が指定されておらず、avbr_accuracy と avbr_convergence の両方が非ゼロに設定されている場合。このモードは Windows 上の H264 と HEVC で利用できる。
  • それ以外の場合は、既定のレート制御方式 CQP が使われる。

システムによっては、指定したモードとは別のモードが encoder によって選ばれることがある点に注意してほしい。QSV ランタイムが実際に使用する設定を確認するには、詳細度(verbosity)を verbose 以上に設定する。

9.30.2 Global Options -> MSDK Options

libavcodec のグローバルオプションの一部は、次のように MSDK オプションへ対応付けられる:

  • g/gop_size -> GopPicSize
  • bf/max_b_frames+1 -> GopRefDist
  • rc_init_occupancy/rc_initial_buffer_occupancy -> InitialDelayInKB
  • slices -> NumSlice
  • refs -> NumRefFrame
  • b_strategy/b_frame_strategy -> BRefType
  • cgop/CLOSED_GOP codec フラグ -> GopOptFlag
  • CQP モードでは、i_qfactor/i_qoffset と b_qfactor/b_qoffset がそれぞれ QPP と QPI の差、および QPP と QPB の差を設定する。
  • coder オプションを vlc の値に設定すると、H.264 encoder は CABAC ではなく CAVLC を使う。

9.30.3 Common Options

以下のオプションはすべての qsv encoder で使われる。

async_depth

アプリケーションが結果を明示的に同期するまでに実行する非同期操作の数を指定する。0 の場合、値は未指定となる。

preset

このオプションは veryfast(最速)から veryslow(最高品質)までの選択肢を列挙する。

‘veryfast’ ‘faster’ ‘fast’ ‘medium’ ‘slow’ ‘slower’ ‘veryslow’ forced_idr

I フレームを IDR フレームとして強制する。

low_power

encoder でこのフラグを ON に設定すると、消費電力と GPU 使用量を抑えられる。

9.30.4 Runtime Options

以下のオプションは qsv エンコード中に使用できる。

global_quality i_quant_factor i_quant_offset b_quant_factor b_quant_offset

h264_qsv と hevc_qsv で対応。これらの値を変更すると、qsv コーデックの qp 設定をリセットする。

max_frame_size

h264_qsv と hevc_qsv で対応。この値を変更すると、qsv コーデックの MaxFrameSize 設定をリセットする。

gop_size

この値を変更すると、qsv コーデックの gop 設定をリセットする。

int_ref_type int_ref_cycle_size int_ref_qp_delta int_ref_cycle_dist

h264_qsv と hevc_qsv で対応。これらの値を変更すると、qsv コーデックの Intra Refresh 設定をリセットする。

qmax qmin max_qp_i min_qp_i max_qp_p min_qp_p max_qp_b min_qp_b

h264_qsv で対応。これらの値を変更すると、qsv コーデックの max/min qp 設定をリセットする。

low_delay_brc

h264_qsv、hevc_qsv、av1_qsv で対応。この値を変更すると、qsv コーデックの low_delay_brc 設定をリセットする。

framerate

この値を変更すると、qsv コーデックの framerate 設定をリセットする。

bit_rate rc_buffer_size rc_initial_buffer_occupancy rc_max_rate

これらの値を変更すると、qsv コーデックのビットレート制御設定をリセットする。

pic_timing_sei

h264_qsv と hevc_qsv で対応。この値を変更すると、qsv コーデックの pic_timing_sei 設定をリセットする。

qsv_params

QSV encoder のパラメータを、コロン区切りのキーと値のペアのリストとして設定する。

qsv_params は key1=value1:key2=value2:... の形式で記述する。

これらのパラメータは、MFXSetParameter 関数を使って基盤の Intel Quick Sync Video (QSV) encoder へ直接渡される。

例:

ffmpeg -i input.mp4 -c:v h264_qsv -qsv_params "CodingOption1=1:CodingOption2=2" output.mp4

このオプションにより、QSV encoder が提供するさまざまな encoder 固有の設定をきめ細かく制御できる。

9.30.5 H264 options

以下のオプションは h264_qsv で使われる

extbrc

拡張ビットレート制御。

recovery_point_sei

このフラグを設定すると、各 intra refresh サイクルの先頭に recovery point SEI メッセージを挿入する。

rdo

レート歪み最適化を有効にする。

max_frame_size

エンコード後のフレームの最大サイズ(バイト単位)。

max_frame_size_i

I フレームのエンコード後の最大サイズ(バイト単位)。この値を 0 より大きく設定した場合、I フレームについては max_frame_size で設定した値は無視される。

max_frame_size_p

P フレームのエンコード後の最大サイズ(バイト単位)。この値を 0 より大きく設定した場合、P フレームについては max_frame_size で設定した値は無視される。

max_slice_size

エンコード後のスライスの最大サイズ(バイト単位)。

bitrate_limit

ビットレート制限を切り替える。ビットレートを QSV encoder が課す範囲内に収まるよう変更する。このフラグを off にすると HRD 適合性に違反するおそれがある。QSV encoder の範囲を下回るビットレートを指定すると品質に大きく影響しうる点に注意してほしい。on の場合、このオプションは CQP 以外のモードで効果を持つ。ビットレートが QSV encoder の課す範囲内にない場合、範囲内に収まるよう変更される。

mbbrc

このフラグを設定すると、マクロブロック単位のビットレート制御が有効になり、主観的な視覚品質が概して向上する。このフラグを有効にすると、性能や客観的な視覚品質指標に悪影響を及ぼすことがある。

low_delay_brc

このフラグを設定すると、qsv プラグインの LowDelayBRC 機能のオン/オフが切り替わる。この機能はフレームごとのビットストリームサイズのばらつきを最小化する、より正確なビットレート制御を提供する。値: -1=既定 0=オフ 1=オン

adaptive_i

このフラグは QSV encoder による I フレームの挿入を制御する。このフラグを ON にすると、フレーム種別を P や B から I へ変更できるようになる。

adaptive_b

このフラグはフレーム種別を B から P へ変更することを制御する。

p_strategy

P ピラミッドを有効にする: 0=既定 1=simple 2=pyramid(bf を 0 に設定する必要がある)。

b_strategy

このオプションは B フレームを参照として使うかどうかを制御する。

dblk_idc

このオプションはデブロッキングを無効にする。値の範囲は 0〜2。

cavlc

設定すると CAVLC を使い、設定しないとエンコードに CABAC を使う。

vcm

ビデオ会議モード。ratecontrol method を参照のこと。

idr_interval

IDR フレーム間の距離(I フレーム数)。

pic_timing_sei

pic_struct_syntax 要素を持つ picture timing SEI を挿入する。

single_sei_nal_unit

すべての SEI メッセージを 1 つの NALU にまとめる。

max_dec_frame_buffering

DPB にバッファリングするフレームの最大数。

look_ahead

先読み付きの VBR アルゴリズムを使う。

look_ahead_depth

先読みの深さ(フレーム数)。

look_ahead_downsampling

先読み解析のために保存するフレームの縮小率。

‘unknown’ ‘auto’ ‘off’ ‘2x’ ‘4x’ int_ref_type

intra refresh の種別を指定する。intra refresh の主目的は、I フレームによる符号化ビットストリームサイズの大きな増加を伴わずにエラー耐性を高めることである。SDK encoder は、refresh サイクルの各フレームの一部を intra MB で符号化することでこれを実現する。none は refresh なしを意味する。vertical は MB の列ごとの垂直方向 refresh、horizontal は MB の行ごとの水平方向 refresh、slice は重なりのないスライス単位での水平方向 refresh を意味する。slice の場合、in_ref_cycle_size は無視される。intra refresh を有効にするには、B フレームを 0 に設定する必要がある。

int_ref_cycle_size

refresh サイクル内のピクチャ数を 2 以上で指定する。0 と 1 は無効な値である。

int_ref_qp_delta

挿入する intra MB の QP 差を指定する。これは符号付きの値で、輝度サンプルの目標符号化ビット深度が 8 の場合は [-51, 51] の範囲、10 ビット深度の場合は [-63, 63]、12 ビット深度の場合は [-75, 75] の範囲となる。

int_ref_cycle_dist

intra-refresh サイクルの開始間の距離(フレーム単位)。

profile

‘unknown’ ‘baseline’ ‘main’ ‘high’ a53cc

A53 クローズドキャプションを使う(利用可能な場合)。

aud

Access Unit Delimiter NAL を挿入する。

mfmode

マルチフレームモード。

‘off’ ‘auto’ repeat_pps

フレームごとに pps を繰り返す。

max_qp_i

I フレームの最大映像量子化スケール。

min_qp_i

I フレームの最小映像量子化スケール。

max_qp_p

P フレームの最大映像量子化スケール。

min_qp_p

P フレームの最小映像量子化スケール。

max_qp_b

B フレームの最大映像量子化スケール。

min_qp_b

B フレームの最小映像量子化スケール。

scenario

エンコードセッションのシナリオに関するヒントを encoder へ与える。

‘unknown’ ‘displayremoting’ ‘videoconference’ ‘archive’ ‘livestreaming’ ‘cameracapture’ ‘videosurveillance’ ‘gamestreaming’ ‘remotegaming’ avbr_accuracy

AVBR レート制御の精度(0.1 パーセント単位)。

avbr_convergence

AVBR レート制御の収束(100 フレーム単位)。

avbr_accuracy と avbr_convergence のパラメータは、平均可変ビットレート制御 (AVBR) アルゴリズムのためのものである。このアルゴリズムは、avbr_convergence の期間の後、精度の範囲 avbr_accuracy 内で指定したビットレート target_bitrate を満たしつつ、全体のエンコード品質に重点を置く。この方式は HRD に従わず、瞬時ビットレートの上限設定やパディングは行わない。

skip_frame

フレームごとのメタデータ "qsv_skip_frame" を使い、エンコード時にフレームをスキップする。このオプションはこのメタデータの使い方を定義する。

‘no_skip’

フレームスキップは無効。

‘insert_dummy’

encoder は、すべてのマクロブロックがスキップとして符号化されたフレームをビットストリームに挿入する。

‘insert_nothing’

insert_dummy に似ているが、encoder はビットストリームに何も挿入しない。スキップされたフレームは依然として brc で使われる。例えば gop にはスキップされたフレームが含まれ、スキップされたフレームの後のフレームはサイズが大きくなる。

‘brc_only’

skip_frame メタデータは、現在のフレームより前に欠落したフレームの数を示す。

9.30.6 HEVC Options

これらのオプションは hevc_qsv で使用する。

extbrc

拡張ビットレート制御。

recovery_point_sei

このフラグを設定すると、各イントラリフレッシュサイクルの先頭にリカバリポイント SEI メッセージを挿入する。

rdo

レート歪み最適化を有効にする。

max_frame_size

エンコード後のフレームの最大サイズ(バイト単位)。

max_frame_size_i

I フレームのエンコード後の最大サイズ(バイト単位)。この値を 0 より大きく設定すると、I フレームでは max_frame_size の値が無視される。

max_frame_size_p

P フレームのエンコード後の最大サイズ(バイト単位)。この値を 0 より大きく設定すると、P フレームでは max_frame_size の値が無視される。

max_slice_size

エンコード後のスライスの最大サイズ(バイト単位)。

mbbrc

このフラグを設定するとマクロブロック単位のビットレート制御が有効になり、一般に主観的な画質が向上する。ただし、有効にすると性能や客観的な画質指標に悪影響を与える場合がある。

low_delay_brc

このフラグは qsv プラグインの LowDelayBRC 機能のオン/オフを切り替える。これはフレームごとのビットストリームサイズのばらつきを最小化する、より正確なビットレート制御を提供する。値: -1=既定値 0=オフ 1=オン

adaptive_i

このフラグは QSV エンコーダによる I フレームの挿入を制御する。オンにすると、フレームタイプを P や B から I へ変更できるようになる。

adaptive_b

このフラグはフレームタイプを B から P へ変更することを制御する。

p_strategy

P ピラミッドを有効にする: 0=既定値 1=simple 2=pyramid(bf を 0 に設定する必要がある)。

b_strategy

このオプションは B フレームを参照として使用するかどうかを制御する。

dblk_idc

このオプションはデブロッキングを無効にする。値は 0〜2 の範囲を取る。

idr_interval

IDR フレーム間の距離(I フレーム単位)。

‘begin_only’

ストリームの先頭でのみ IDR フレームを出力する。

load_plugin

内部セッションで読み込むユーザープラグイン。

‘none’ ‘hevc_sw’ ‘hevc_hw’ load_plugins

内部セッションで読み込む、16 進のプラグイン UID を : で区切ったリスト。

look_ahead_depth

先読みの深さ(フレーム数)。extbrc オプションを有効にした場合に利用できる。

profile

エンコードのプロファイルを設定する(scc には libmfx >= 1.32 が必要)。

‘unknown’ ‘main’ ‘main10’ ‘mainsp’ ‘rext’ ‘scc’ tier

エンコードのティアを設定する(high ティアに対応できるのはレベル >= 4 のみ)。このオプションは level オプションを指定した場合にのみ有効になる。

‘main’ ‘high’ gpb

1: GPB(一般化 P/B フレーム)

0: 通常の P フレーム。

tile_cols

タイルエンコードの列数。

tile_rows

タイルエンコードの行数。

aud

Access Unit Delimiter NAL を挿入する。

pic_timing_sei

pic_struct_syntax 要素を含む picture timing SEI を挿入する。

transform_skip

このオプションをオンにすると transformskip が有効になる。ICL 以降のプラットフォームで対応している。

int_ref_type

イントラリフレッシュの種類を指定する。イントラリフレッシュの主な目的は、I フレームによるエンコード後のビットストリームサイズへの大きな影響を伴わずにエラー耐性を向上させることである。SDK エンコーダは、リフレッシュサイクルの各フレームの一部をイントラ MB で符号化することでこれを実現する。none はリフレッシュなし。vertical は MB の列単位で行う垂直リフレッシュ。horizontal は MB の行単位で行う水平リフレッシュ。slice は重複のないスライス単位で行う水平リフレッシュ。slice の場合、in_ref_cycle_size は無視される。イントラリフレッシュを有効にするには B フレームを 0 に設定する必要がある。

int_ref_cycle_size

リフレッシュサイクル内のピクチャ数を指定する。2 以上で、0 と 1 は無効な値である。

int_ref_qp_delta

挿入されるイントラ MB の QP 差分を指定する。これは符号付きの値で、輝度サンプルのターゲットエンコードビット深度が 8 の場合は [-51, 51] の範囲、10 ビット深度の場合は [-63, 63]、12 ビット深度の場合は [-75, 75] の範囲となる。

int_ref_cycle_dist

イントラリフレッシュサイクルの開始位置どうしの距離(フレーム単位)。

max_qp_i

I フレームの映像量子化スケールの最大値。

min_qp_i

I フレームの映像量子化スケールの最小値。

max_qp_p

P フレームの映像量子化スケールの最大値。

min_qp_p

P フレームの映像量子化スケールの最小値。

max_qp_b

B フレームの映像量子化スケールの最大値。

min_qp_b

B フレームの映像量子化スケールの最小値。

scenario

エンコードセッションのシナリオについてエンコーダにヒントを与える。

‘unknown’ ‘displayremoting’ ‘videoconference’ ‘archive’ ‘livestreaming’ ‘cameracapture’ ‘videosurveillance’ ‘gamestreaming’ ‘remotegaming’ avbr_accuracy

AVBR レート制御の精度(0.1 パーセント単位)。

avbr_convergence

AVBR レート制御の収束(100 フレーム単位)

パラメータ avbr_accuracy と avbr_convergence は、平均可変ビットレート制御(AVBR)アルゴリズム用である。このアルゴリズムは、avbr_convergence の期間が過ぎたあとに、指定したビットレート target_bitrate を精度範囲 avbr_accuracy の中で満たしつつ、全体的なエンコード品質に重点を置く。この方式は HRD に従わず、瞬間ビットレートに上限や水増しは行わない。

skip_frame

エンコード時にフレームをスキップするため、フレームごとのメタデータ "qsv_skip_frame" を使用する。このオプションはこのメタデータの使い方を定義する。

‘no_skip’

フレームスキップを無効にする。

‘insert_dummy’

エンコーダは、すべてのマクロブロックをスキップとして符号化したフレームをビットストリームに挿入する。

‘insert_nothing’

insert_dummy と似ているが、エンコーダはビットストリームに何も挿入しない。スキップされたフレームは引き続き brc で使用される。例えば gop にはスキップされたフレームが含まれ、スキップされたフレームより後のフレームはサイズが大きくなる。

‘brc_only’

skip_frame メタデータが、現在のフレームより前に欠落したフレーム数を示す。

9.30.7 MPEG2 Options

これらのオプションは mpeg2_qsv で使用する。

profile

‘unknown’ ‘simple’ ‘main’ ‘high’

9.30.8 VP9 Options

これらのオプションは vp9_qsv で使用する。

profile

‘unknown’ ‘profile0’ ‘profile1’ ‘profile2’ ‘profile3’ tile_cols

タイルエンコードの列数(libmfx >= 1.29 が必要)。

tile_rows

タイルエンコードの行数(libmfx >= 1.29 が必要)。

9.30.9 AV1 Options

これらのオプションは av1_qsv で使用する(libvpl が必要)。

profile

‘unknown’ ‘main’ tile_cols

タイルエンコードの列数。

tile_rows

タイルエンコードの行数。

adaptive_i

このフラグは QSV エンコーダによる I フレームの挿入を制御する。オンにすると、フレームタイプを P や B から I へ変更できるようになる。

adaptive_b

このフラグはフレームタイプを B から P へ変更することを制御する。

b_strategy

このオプションは B フレームを参照として使用するかどうかを制御する。

extbrc

拡張ビットレート制御。

look_ahead_depth

先読みの深さ(フレーム数)。extbrc オプションを有効にした場合に利用できる。

low_delay_brc

このフラグは qsv プラグインの LowDelayBRC 機能のオン/オフを切り替える。これはフレームごとのビットストリームサイズのばらつきを最小化する、より正確なビットレート制御を提供する。値: -1=既定値 0=オフ 1=オン

max_frame_size

各フレームに許容される最大サイズ(バイト単位)を設定する。フレームサイズが上限を超えると、エンコーダは QP 値を調整してフレームサイズを制御する。CQP レート制御モードでは無効。

max_frame_size_i

I フレームのエンコード後の最大サイズ(バイト単位)。この値を 0 より大きく設定すると、I フレームでは max_frame_size の値が無視される。

max_frame_size_p

P フレームのエンコード後の最大サイズ(バイト単位)。この値を 0 より大きく設定すると、P フレームでは max_frame_size の値が無視される。

9.31 snow

9.31.1 Options

iterative_dia_size

反復的な動き推定のための dia サイズ。

9.32 VAAPI encoders

VAAPI 経由でアクセスできるハードウェアエンコーダのラッパー。

これらのエンコーダは VAAPI のハードウェアサーフェスでの入力のみを受け付ける。入力がソフトウェアフレームの場合は、hwupload フィルタを使って GPU にアップロードすること。

次の標準的な libavcodec オプションが使用される:

  • g / gop_size
  • bf / max_b_frames
  • profile

設定しない場合、入力フレームのフォーマットとドライバが対応するプロファイルから自動的に決定される。

  • level
  • b / bit_rate
  • maxrate / rc_max_rate
  • bufsize / rc_buffer_size
  • rc_init_occupancy / rc_initial_buffer_occupancy
  • compression_level

速度と品質のトレードオフ: 値が大きいほど高速で品質は低い。

  • q / global_quality

サイズと品質のトレードオフ: 値が大きいほど小さくなり品質は低い。

  • qmin
  • qmax
  • i_qfactor / i_quant_factor
  • i_qoffset / i_quant_offset
  • b_qfactor / b_quant_factor
  • b_qoffset / b_quant_offset
  • slices

すべてのエンコーダは次のオプションに対応する:

low_power

一部のドライバ/プラットフォームでは、既定のエンコーダより消費電力の少ないことを目的とした、一部のコーデック向けの第 2 のエンコーダを提供している。このオプションを設定すると、そのエンコーダの使用を試みる。対応する機能が限られている場合があるため、このモードでは利用できないオプションがあることに注意。

idr_interval

open-GOP モードにおいて、フルリフレッシュ(IDR)フレーム間に挟む通常のイントラフレームの数を設定する。これらのイントラフレームは依然として IRAP だが、グローバルヘッダを含まず、デコードできない先頭ピクチャを持つ場合がある。

b_depth

B フレームの参照深度を設定する。1(既定値)に設定すると、すべての B フレームは P または I フレームのみを参照する。より大きな値に設定すると複数階層の B フレームが存在し、各階層のフレームはより上位の階層のフレームのみを参照する。

async_depth

処理並列度の最大値。単一チャンネルの性能を向上させるにはこれを増やす。このオプションは、ドライバが vaSyncBuffer 関数を実装していない場合は機能しない。async_depth に大きな値を使う場合は、十分な hw_frames が確保されていることを確認すること。

max_frame_size

各フレームに許容される最大サイズ(バイト単位)を設定する。フレームサイズが上限を超えると、エンコーダは QP 値を調整してフレームサイズを制御する。CQP レート制御モードでは無効。

rc_mode

使用するレート制御モードを設定する。ドライバによってはモードの一部しか対応していない場合がある。

利用可能なモード:

auto

ドライバの対応状況とその他のオプションに基づいて自動的にモードを選ぶ。これが既定値。

CQP

固定品質(Constant-quality)。

CBR

固定ビットレート(Constant-bitrate)。

VBR

可変ビットレート(Variable-bitrate)。

ICQ

インテリジェント固定品質(Intelligent constant-quality)。

QVBR

品質指定可変ビットレート(Quality-defined variable-bitrate)。

AVBR

平均可変ビットレート(Average variable bitrate)。

blbrc

ブロック単位のレート制御を有効にする。これはブロックごとに異なるビットレートを割り当てる。CQP モードでは無効。

各エンコーダには固有のオプションもある:

av1_vaapi

profile は seq_profile の値を設定する。tier は seq_tier の値を設定する。level は seq_level_idx の値を設定する。

tiles

入力映像をエンコードするタイル数を、列 x 行として設定する(既定値は auto で、最小のタイル列数/行数を使うことを意味する)。

tile_groups

タイルグループ数を設定する。すべてのタイルは各タイルグループにできるだけ均等に分配される(既定値は 1)。

h264_vaapi

profile は profile_idcconstraint_set*_flag の値を設定する。level は level_idc の値を設定する。

coder

エントロピーエンコーダを設定する(既定値は cabac)。設定可能な値:

‘ac’ ‘cabac’

CABAC を使用する。

‘vlc’ ‘cavlc’

CAVLC を使用する。

aud

ストリームにアクセスユニットデリミタを含める(既定では含まれない)。

sei

含める SEI メッセージの種類を設定する。次の値の組み合わせ:

‘identifier’

エンコーダに関する情報を含む user_data_unregistered メッセージを含める。

‘timing’

picture timing のパラメータ(buffering_period および pic_timing メッセージ)を含める。

‘recovery_point’

必要に応じてリカバリポイント(recovery_point メッセージ)を含める。

hevc_vaapi

profile と level はそれぞれ general_profile_idcgeneral_level_idc の値を設定する。

aud

ストリームにアクセスユニットデリミタを含める(既定では含まれない)。

tier

general_tier_flag を設定する。明示的に指定しない場合、これがストリームに選ばれるレベルに影響することがある。

sei

含める SEI メッセージの種類を設定する。次の値の組み合わせ:

‘hdr’

入力フレームに HDR メタデータがあれば含める(mastering_display_colour_volume および content_light_level メッセージ)。

tiles

入力映像をエンコードするタイル数を、列 x 行として設定する。数を大きくするとエンコードとデコードの両方で並列度が高まるが、符号化効率が下がる場合がある。

mjpeg_vaapi

ベースライン DCT エンコードのみに対応する。エンコーダは常に標準の量子化テーブルとハフマンテーブルを使用する。global_quality は標準の量子化テーブルをスケールする(範囲 1-100)。

YUV では 4:2:0、4:2:2、4:4:4 のサブサンプリングモードに対応する。RGB にも対応しており、その場合は RGB JPEG が生成される。

jfif

各フレームに JFIF ヘッダを含める(既定では含まれない)。

huffman

標準のハフマンテーブルを含める(既定では有効)。これをオフにすると出力フレームごとに数百バイト節約できるが、MJPEG を完全には扱えない一部の JPEG デコーダとの互換性を失う場合がある。

mpeg2_vaapi

profile と level は profile_and_level_indication の値を設定する。

vp8_vaapi

B フレームには対応していない。

global_quality は非キーフレームに使う q_idx を設定する(範囲 0-127)。

loop_filter_level loop_filter_sharpness

ループフィルタのパラメータを手動で設定する。

vp9_vaapi

global_quality は P フレームに使う q_idx を設定する(範囲 0-255)。

loop_filter_level loop_filter_sharpness

ループフィルタのパラメータを手動で設定する。

B フレームには対応しているが、出力ストリームは常に表示順ではなくエンコード順になる。B フレームを有効にした場合、出力ストリームを変更してフレームを正しい順序で表示するために vp9_raw_reorder bitstream filter が必要になることがある。

通常のフレームのみが生成される。すべてのデコーダで使用できるストリームを生成するには vp9_superframe bitstream filter が必要になる場合がある。

9.33 vbn

Vizrt Binary Image エンコーダ。

このフォーマットは放送機器ベンダーの Vizrt が高速なテクスチャストリーミングのために使用している。テクスチャデータの LZW 圧縮やミップマップ生成といったこのフォーマットの高度な機能には対応していない。

9.33.1 Options

format string

VBN ファイルで使うテクスチャ圧縮を設定する。dxt1、dxt5、raw のいずれか。既定値は dxt5。

9.34 vc2

SMPTE VC-2(旧称 BBC Dirac Pro)。このコーデックは主にプロ向け放送を対象としていたが、yuv420、yuv422、yuv444 を 8 ビット(リミテッドレンジまたはフルレンジ)、10 ビット、12 ビットで扱えるため、低オーバーヘッドと低圧縮を必要とする他の用途(画面録画など)にも適している。

9.34.1 Options

b

ターゲットの映像ビットレートを設定する。通常は非圧縮映像ビットレートのおよそ 1:6(例えば 1920x1080 50fps yuv422p10 ならおよそ 400Mbps)。値を大きく(非圧縮ビットレートに近く)すると可逆圧縮モードが有効になる。

field_order

設定するとインターレース入力に対してフィールド符号化を有効にする(例: tt = トップフィールドファースト)。フィールドを分割してそれぞれ別々に符号化するため、インターレース素材では圧縮率が上がるはずである。

wavelet_depth

適用するウェーブレット変換の総回数を 1 から 5(既定値)の間で設定する。値を小さくすると圧縮率と品質が下がる。性能の低いデコーダでは wavelet_depth が 3 を超える値を扱えない場合がある。

wavelet_type

変換タイプを設定する。現在は 5_3(LeGall)と 9_7(Deslauriers-Dubuc)のみ実装されており、圧縮率の良い 9_7 が既定値である。

slice_width slice_height

各スライスのスライスサイズを設定する。値を大きくすると圧縮率が上がる。より制約の多い他のデコーダとの互換性のためには、slice_width を 32、slice_height を 8 にすること。

tolerance

レート制御システムのアンダーシュート許容量をパーセントで設定する。これはコストの高い探索が実行されるのを防ぐためのものである。

qm

既定で、または wavelet_depth が 5 に設定されたときに使用する量子化マトリクスのプリセットを設定する。

  • - default 仕様で定められた既定の量子化マトリクスを、第 5 レベル用の値で拡張して使用する。ディテールの保持とアーティファクトの抑制のバランスが良い。
  • - flat すべて 0 にした量子化マトリクスを使用する。PSNR は上がるが体感品質は下がる場合がある。見せかけのベンチマーク用。
  • - color ディテールは減るが、極端に低いビットレートでも色の保持を試みる。

10 Subtitles Encoders

10.1 dvbsub

このコーデックは、DVB 放送や録画で使われるビットマップ字幕フォーマットをエンコードする。ビットマップは通常、MPEG-TS のようなコンテナに別ストリームとして埋め込まれる。

10.1.1 Options

min_bpp integer (2, 4, or 8)

字幕のカラールックアップテーブルのビット/ピクセル値の最小値を設定する。

DVB は 2、4、8 ビット/ピクセルのカラールックアップテーブルに対応する。このオプションは、色数にかかわらず特定のビット/ピクセル値を強制できる。2 ビット/ピクセルに対応しない、または正しく対応しないプレーヤーもあるため、この値は既定で 4 になっている。

10.2 dvdsub

このコーデックは、DVD で使われるビットマップ字幕フォーマットをエンコードする。通常は VOBSUB のファイルペア(.idx + .sub)として保存されるが、Matroska ファイルでも使用できる。

10.2.1 Options

palette

ビットマップが使用するグローバルパレットを指定する。

このオプションのフォーマットは、カンマで区切られた 16 個の 24 ビット 16 進数(0x プレフィックスなし)を含む文字列で、例えば 0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b のようにする。

even_rows_fix

1 に設定すると、すべての字幕でピクセル行数を偶数にする回避策を有効にする。これは、行数が奇数のときに最下行を切り落としてしまう一部のプレーヤーの問題を修正する。この回避策は、必要に応じて完全に透明な行を追加するだけである。オーバーヘッドは小さく、平均すると字幕あたり通常 1 バイト程度。

既定ではこの回避策は無効になっている。

10.3 lrc

このコーデックは LRC 歌詞フォーマットをエンコードする。

10.3.1 Options

precision

タイムスタンプの小数部の精度を指定する。タイムベースはこの値に基づいて決定される。

既定では 1/100 秒の 2 になっている。

11 See Also

ffmpeg, ffplay, ffprobe, libavcodec

12 Authors

FFmpeg の開発者たち。

著作者に関する詳細は、プロジェクトの Git 履歴を参照のこと(https://git.ffmpeg.org/ffmpeg)。例えば FFmpeg のソースディレクトリで git log コマンドを実行するか、オンラインリポジトリ https://git.ffmpeg.org/ffmpeg を閲覧すればよい。

特定のコンポーネントのメンテナは、ソースコードツリー内の MAINTAINERS ファイルに記載されている。

ホスティングは telepoint.bg の提供による。