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 を明示的に指定する必要があります。libaribb24 と libaribcaption の両方が有効な場合は、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 レンダリングの入力フレームサイズを以下のように仮定します。
- PROFILE_A : 1440 x 1080、SAR (PAR) 4:3
- 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 のデコードや再生に直接影響または作用しますが、他のオプションは単なる情報提供のためのものです。一部のオプションは、本来は音声データに使えるビットを出力ストリームに追加するため、出力の品質に影響します。それらは、以下のオプション一覧で注記によって示されます。
これらのパラメータは、いくつかの公開ドキュメントで詳しく説明されています。
- A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard
- A/54 - Guide to the Use of the ATSC Digital Television Standard
- Dolby Metadata Guide
- Dolby Digital Professional Encoding Guidelines
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=libvpx、ffmpeg -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 / bitrate、buf-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.h の struct vpx_codec_enc_cfg を参照してください。
ts_number_layers
時間符号化レイヤの数。
ts_target_bitrate
各時間レイヤの目標ビットレート(kbps 単位)。(ビットレートは下位の時間レイヤを含めた値であるべきです。)
ts_rate_decimator
各時間レイヤのフレームレート間引き係数。
ts_periodicity
フレームの時間レイヤへの所属を定義するシーケンスの長さ。
ts_layer_id
フレームの時間レイヤへの所属を定義するテンプレート。
ts_layering_mode
(任意)あらかじめ定義された時間レイヤリングモードの集合から時間構造を選択します。現在は次のオプションをサポートしています。
0
時間レイヤリングのフラグを内部的に与えません。AVFrame の metadata フィールドで次のキーを使って渡されるフラグに依存します。
vp8-flags
現在のフレームの参照方式を示すために encoder へ渡すフラグを設定します。詳細は vpx/vpx_encoder.h の vpx_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_idc と constraint_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_idc と general_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 の提供による。