一つのバイナリで 8, 10 ビット深度の両方に対応した。それに伴って ffmpeg も両方エンコードが出来るようになった。ただし古い ffmpeg を利用するとエラーが出るので master を利用する。

対応コミット
git.videolan.org Git – x264.git/commitdiff : Unify 8-bit and 10-bit CLI and libraries
git.videolan.org Git – ffmpeg.git/commitdiff : x264: Support version 153

x264 のビルドにはオプション指定しなくても複数のビット深度に対応している。

ソースコード配布先
x264, the best H.264/AVC encoder – VideoLAN
git clone https://git.videolan.org/x264.git

x264 の出力方法はオプションに --output-dept 10 を追加する。追加しなければ 8bit深度になる。ffmpeg の出力方法は yuv420p ならば出力オプションに -pix_fmt yuv420p10le を追加する。追加しなければ 8bit深度になる。

色空間を明示する場合は H.264 だと -bsf:v h264_metadata を設定する。

FFmpeg Bitstream Filters Documentation : h264_metadata

colour_primaries, transfer_characteristics, matrix_coefficientsの値。ただし colorprim, colormatrix の 9 は bt2020, bt2020nc になるが、transfer の 9 は log100 になる。x265 と同じ内容になるので公式ドキュメントを参照する。

1 : BT.709
6 : BT.601(smpte170m)

4K 10bit HDR素材のエンコード例。transfer_characteristics=9 をつけると MPC-HC で色がおかしくなるので付けていない。数値を指定するには transfer=16 を指定する。
ffmpeg -i input -vcodec libx264 -x264-params "colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc" -bsf:v h264_metadata=colour_primaries=9:matrix_coefficients=9 -acodec copy -pix_fmt yuv420p10le output.mp4

既定値のオプションの違いは qpmax が 8bit なら 69 なのが、10bit なら 81 になる。x264 core 155 r2893 b00bcaf より

8bit
cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
10bit
cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=81 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00

x264 と ffmpeg の libx264 との対応は以下を参照

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)