• aomencのオプション 1/2

    2018年03月18日 16時03分
    最終更新: 2018-04-03 (77cab41fff4bea69760e882a22327ad1d7ef1b93)

    aomencのオプションを調べたメモです。
    自分で使うために調べたのですが、少しは役に立つかもしれないので置いておきます。

    ただ、オプションを完全に理解するには
    エンコード処理の知識と英語の知識両方が必要となり、
    私には完全な内容は作れないため、その前提で参照してください。

    間違いがあったとしても私はあなたを騙そうとしたわけではなく
    単に私が無能なブタであるというだけなのです。

    新たな情報が入ったら随時更新しようと思います。

    2ページ目

    使い方
    aomenc <options> -o dst_filename src_filename


    src_filename
    ファイルパスまたは「-」を指定する。
    「-」を指定した場合標準入力から読み出す。
    y4mまたはRAWを指定可能。

    Options

    オプション デフォルト
    説明
    メモ
    --help
    Show usage options and exit
    ヘルプ表示。
    -c <arg>
    --cfg=<arg>
    Config file to use
    コンフィグファイルの指定
    コンフィグファイルはオプション1つを1行に記載した形式。
    オプションは「--」から始まるオプションのキーを「--」を除いた形で指定する。
    オプションのキーと値は「=」ではなく「:」で結合する。
    オプションが値を持たない場合は値に「ON」を指定する。
    例:「--codec=av1」->「codec:av1」 「--webm」->「webm:ON」
    -D --debug
    Debug mode (makes output deterministic)
    デバッグモード有効。
    -o <arg>
    --output=<arg>
    Output filename
    出力ファイルパスの指定。
    --codec=<arg> av1
    Codec to use
    使用するCodecの指定。
    今のところav1しか実装されていない。
    -p <arg>
    --passes=<arg>
    2
    Number of passes (1/2)
    1パスエンコードか2パスエンコードかの指定。
    --pass=<arg>
    Pass to execute (1/2)
    2パスエンコード時の1パス目か2パス目かの指定。
    --fpf=<arg>
    First pass statistics file name
    2パスエンコード時の統計情報ファイルパス。
    --limit=<arg>
    Stop encoding after n input frames
    このフレームまでエンコードする。
    --skip=<arg>
    Skip the first n input frames
    このフレームからエンコードする。
    --good
    Use Good Quality Deadline
    Deprecated
    指定しても無効。
    -q
    --quiet
    Do not print encode progress
    進捗を表示しない。
    -v
    --verbose
    Show encoder parameters
    詳しく表示する。
    --psnr
    Show PSNR in status line
    ステータス行にPSNR(ピーク信号対雑音比)を表示する。
    --webm
    Output WebM (default when WebM IO is enabled)
    WebM形式で出力する。
    デフォルトでWebM形式で出力するため指定の必要はない。
    しておいた方が確実ではある。
    --ivf
    Output IVF
    IVF形式で出力する。
    IVFはコマンドラインとかで処理する用の簡易形式。
    特別にIVFが必要という状況以外では使うことは無いだろう。
    --obu
    Output OBU
    OBUはBitstreamで使われているOBUのことだと思う。
    つまり、コンテナを使わずAV1のBitstreamをそのまま出力するということのようだ。
    -P
    --output-partitions
    Makes encoder output partitions. Requires IVF output!
    IVF形式で出力する際に分割して出力できるっぽい?
    --q-hist=<arg>
    Show quantizer histogram (n-buckets)
    量子化ヒストグラム?を表示する。
    見て意味のわかる人はONにしてみたらいいのではなかろうか。
    --rate-hist=<arg>
    Show rate histogram (n-buckets)
    レートヒストグラム?を表示する。
    見て意味のわかる人はONにしてみたらいいのではなかろうか。
    --disable-warnings
    Disable warnings about potentially incorrect encode settings.
    潜在的なエンコードオプションの間違いについての警告を無効にする。
    この手のはちゃんと直しておいた方がいいので無効にしない方がよさそう。
    -y --disable-warning-prompt
    Display warnings, but do not prompt user to continue.
    警告は表示するけどユーザーへの確認を行わなくする。
    警告を無視してバッチ処理するときとかに使うのだろうけどそもそも警告は直した方がいい。
    --test-decode=<arg>warn
    Test encode/decode mismatch off, fatal, warn
    エンコード結果をデコードしてテストする。
    off: テストしない
    warn: テストしてエラーが出たら警告を出して処理を続ける
    fatal: テストしてエラーが出たら警告を出して処理を終了する
    滅多に出ないだろうしデコードしてエラーが出るのを渡されても困るのでfatalがいいのではなかろうか。

    Encoder Global Options

    オプション デフォルト
    説明
    メモ
    --yv12
    Input file is YV12
    入力ファイルのフォーマットがYV12。
    入力ファイルがy4mの場合はそこから読み出すため指定しなくてよい。
    --i420
    Input file is I420 (default)
    入力ファイルのフォーマットがI420
    入力ファイルがy4mの場合はそこから読み出すため指定しなくてよい。
    --i422
    Input file is I422
    入力ファイルのフォーマットがI422
    入力ファイルがy4mの場合はそこから読み出すため指定しなくてよい。
    --i444
    Input file is i444
    入力ファイルのフォーマットがi444
    入力ファイルがy4mの場合はそこから読み出すため指定しなくてよい。
    -u <arg>
    --usage=<arg>
    0
    Usage profile number to use
    使用するエンコード設定デフォルト値セットのセット番号。
    ただし現在0しか実装されていなくてデフォルトが0。
    -t <arg>
    --threads=<arg>
    Max number of threads to use
    使用するスレッド数。
    現在の実装では--tile-columnsを1以上に設定いた場合のみマルチスレッド動作する。
    (並列処理は横に分割されたタイルでのみ行われる)
    ただ、タイル分割してスレッド数を増やしてもイマイチCPUを使ってくれない。
    --profile=<arg>
    Bitstream profile number to use
    使用するプロファイル番号
    Profile, Bit depth, SRGB Colorspace support, Chroma subsampling
    0, 8 or 10, No, YUV 4:2:0
    1, 8 or 10, Yes, YUV 4:4:4
    2, 8 or 10, No, YUV 4:2:2
    2, 12, Yes, YUV 4:2:0, YUV 4:2:2, YUV 4:4:4
    -w <arg>
    --width=<arg>
    Frame width
    出力データの横の解像度をピクセル単位で指定する。
    入力ファイルがy4mの場合はそこから読み出すため拡大縮小をしないならば指定しなくてよい。
    拡大縮小はI420のみ対応出来るらしいけどエンコーダに渡す前にやっといたほうがいいと思う。
    -h <arg>
    --height=<arg>
    Frame height
    出力データの縦の解像度をピクセル単位で指定する。
    入力ファイルがy4mの場合はそこから読み出すため拡大縮小をしないならば指定しなくてよい。
    拡大縮小はI420のみ対応出来るらしいけどエンコーダに渡す前にやっといたほうがいいと思う。
    --forced_max_frame_width
    Maximum frame width value to force
    0以外を指定した場合その値を強制的に最大幅としてヘッダに書き出す。
    用途がイマイチわからない。
    --forced_max_frame_height
    Maximum frame height value to force
    0以外を指定した場合その値を強制的に最大高さとしてヘッダに書き出す。
    用途がイマイチわからない。
    --stereo-mode=<arg>
    Stereo 3D video format mono, left-right, bottom-top, top-bottom, right-left
    ステレオ3D動画用の設定らしい。
    --timebase=<arg>
    Output timestamp precision (fractional seconds)
    出力データのタイムスタンプの精度?
    タイミングがシビアな用途で使用?
    小数点込みの秒数で指定する。

    Indicates the smallest interval of time, in seconds, used by the stream.
    For fixed frame rate material, or variable frame rate material where frames are timed at a multiple of a given clock (ex: video capture), the \ref RECOMMENDED method is to set the timebase to the reciprocal of the frame rate (ex: 1001/30000 for 29.970 Hz NTSC).
    This allows the pts to correspond to the frame number, which can be handy.
    For re-encoding video from containers with absolute time timestamps, the \ref RECOMMENDED method is to set the timebase to that of the parent container or multimedia framework (ex: 1/1000 for ms, as in FLV).
    aom/aom_encoder.h
    --fps=<arg>30/1
    Stream frame rate (rate/scale)
    フレームレートの指定。
    「30/1」のように指定する。
    入力ファイルがy4mの場合はそこから読み出すため指定しなくてよい。
    変更したい場合はエンコーダに渡す前に編集しておいた方がよいかと。
    --global-error-resilient=<arg>0
    Enable global error resiliency features
    エラー耐性機能?の設定。

    The error resilient bitfield indicates to the encoder which features it should enable to take measures for streaming over lossy or noisy links.
    aom/aom_encoder.h
    -b <arg>
    --bit-depth=<arg>
    8
    Bit depth for codec (8 for version <=1, 10 or 12 for version 2) 8, 10, 12
    出力データのビット深度を指定する。(8 or 10 or 12)
    --lag-in-frames=<arg>19
    Max number of frames to lag
    エンコード時にここで指定したフレーム分だけ出力を遅延させてフレーム間圧縮に使用する。
    フレームを入力してから出力されるまでのレイテンシが上がるので例えばリアルタイムエンコードのような用途には向かない。
    (そもそもリアルタイムエンコードが可能な速度ではない気がするが・・・)
    0を指定するとこの機能を無効にする。
    --large-scale-tile=<arg>0
    Large scale tile coding (0: off (default), 1: on)
    Large scale tileを有効可する設定だがLarge scale tileがどういう物でどういう効果を及ぼすかは不明。
    --monochrome
    Monochrome video (no chroma planes)
    モノクロ動画を出力する。

    Rate Control Options

    オプション デフォルト
    説明
    メモ
    --drop-frame=<arg>0
    Temporal resampling threshold (buf %)
    ターゲットデータバッファの使用率を指定する。
    この使用率を下回った場合にフレームのドロップが発生する。
    0を指定するとフレームのドロップを無効にする。
    という説明だがターゲットデータバッファというのが何者かよくわからない。
    フレームドロップしてオッケーというケースは今時の個人用途ではあまりないと思うのでデフォルトの0でいいんじゃないかな。
    --resize-mode=<arg>0
    Frame resize mode
    フレームを縮小してエンコードしてデコード時にアップスケールする設定。
    0: 縮小しない
    1: 固定の倍率で縮小する
    2: 動的な倍率で縮小する
    --resize-denominator=<arg>8
    Frame resize denominator
    --resize-mode=1の時の倍率の分母を8~16の範囲で指定する。
    分子は8となる。(つまり8/resize-denominatorに縮小される)
    --resize-kf-denominator=<arg>8
    Frame resize keyframe denominator
    --resize-denominatorに対して特にキーフレームだけ別途設定する値。
    --superres-mode=<arg>0
    Frame super-resolution mode
    --resize-modeと同じくフレームを縮小してエンコードする超解像度処理バージョン。
    --superres-denominatorの説明を読む限り--resize-modeとは同時に使える模様。
    0: 縮小しない
    1: 固定の倍率で縮小する
    2: 動的な倍率で縮小する
    3: q-index(謎)を使って縮小する
    --superres-denominator=<arg>8
    Frame super-resolution denominator
    --superres-mode=1の時の倍率の分母を8~16の範囲で指定する。
    分子がいくつになるかは書いてないので不明。
    --resize-modeの倍率と合わせて1/2以上になると--superres-denominatorだけが有効になる的なことが書いてあるがよくわからん。
    --superres-kf-denominator=<arg>8
    Frame super-resolution keyframe denominator
    --superres-denominatorに対して特にキーフレームだけ別途設定する値。
    --superres-qthresh=<arg>63
    Frame super-resolution qindex threshold
    --superres-mode=3の時に使用する超解像度処理後のクオリティ閾値。
    1から63を指定する。
    たぶん数字が大きいほうが綺麗になるよう処理すると思う。
    --superres-kf-qthresh=<arg>63
    Frame super-resolution keyframe qindex threshold
    --superres-qthreshに対して特にキーフレームだけ別途設定する値。
    --end-usage=<arg>vbr
    Rate control mode vbr, cbr, cq, q
    vbr: 可変ビットレート
    cbr: 固定ビットレート
    cq: 固定品質(ただしビットレートの上限まで)
    q: 固定品質
    --target-bitrate=<arg>
    Bitrate (kbps)
    目標とするビットレートを指定する(Kbit/s)
    --min-q=<arg>0
    Minimum (best) quantizer
    品質の上限(数値的には最小値)を0~63の範囲で指定する。
    --max-q=<arg>63
    Maximum (worst) quantizer
    品質の下限(数値的には最大値)を0~63の範囲で指定する。
    --undershoot-pct=<arg>25
    Datarate undershoot (min) target (%)
    This value, expressed as a percentage of the target bitrate, controls the maximum allowed adaptation speed of the codec.
    This factor controls the maximum amount of bits that can be subtracted from the target bitrate in order to compensate for prior overshoot.

    Valid values in the range 0-1000.
    aom/aom_encoder.h
    --overshoot-pct=<arg>25
    Datarate overshoot (max) target (%)
    This value, expressed as a percentage of the target bitrate, controls the maximum allowed adaptation speed of the codec.
    This factor controls the maximum amount of bits that can be added to the target bitrate in order to compensate for prior undershoot.

    Valid values in the range 0-1000.
    aom/aom_encoder.h
    --buf-sz=<arg>
    Client buffer size (ms)
    This value indicates the amount of data that may be buffered by the decoding application.
    Note that this value is expressed in units of time (milliseconds).
    For example, a value of 5000 indicates that the client will buffer (at least) 5000ms worth of encoded data.
    Use the target bitrate (#rc_target_bitrate) to convert to bits/bytes, if necessary.
    aom/aom_encoder.h
    --buf-initial-sz=<arg>4000
    Client initial buffer size (ms)
    This value indicates the amount of data that will be buffered by the decoding application prior to beginning playback.
    This value is expressed in units of time (milliseconds).
    Use the target bitrate (#rc_target_bitrate) to convert to bits/bytes, if necessary.
    aom/aom_encoder.h
    --buf-optimal-sz=<arg>5000
    Client optimal buffer size (ms)
    This value indicates the amount of data that the encoder should try to maintain in the decoder's buffer.
    This value is expressed in units of time (milliseconds).
    Use the target bitrate (#rc_target_bitrate) to convert to bits/bytes, if necessary.
    aom/aom_encoder.h


    2ページ目に続く。
  • オプション名、デフォルト値、説明が表でまとまっていて、とても見やすいです。
    AV1でエンコードを試してみたかったので助かりました。ありがとうございます!
    ieno 2018年04月02日 23時14分 [編集]

コメントを書く

名前
本文
編集用パスワード
管理者のみ閲覧