一部のソースの FFMPEG x265 エンコード設定が間違っている

一部のソースの FFMPEG x265 エンコード設定が間違っている

次のコマンド ラインを使用してファイルをエンコードしようとしています:

ffmpeg -i "source.mp4" -c:v libx265 -preset slow -crf 23.8 -vf scale=1920:-1:flags=lanczos -x265-params ref=6:bframes=5:no-sao=1:no-strong-intra-smoothing=1:cutree=0:aq-mode=3:deblock=-1,-1:rskip=0:rc-lookahead=80:subme=1:numa-pools=16:frame-threads=4 -c:a copy -movflags faststart output.mp4

一部のファイルは、非常に異なるエンコード設定で返されます。Mediainfo の CRF も間違っています。これが発生すると、次のような警告が表示されます。

[mp4 @ 00000148a5247040] track 1: codec frame size is not set

これをグーグルで検索しましたが、この警告が問題を引き起こしていると言及している人は誰もいないようです。

私は比較的最近のビルドを使用しています: ffmpeg version 2021-10-03-git-2761a7403b-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers gcc 10.3.0 (Rev5、MSYS2 プロジェクトによって構築) で構築されました。

SOURCE MEDIAINFO:

    Video
    ID : 1
    Format : AVC
    Format/Info : Advanced Video Codec
    Format profile : [email protected]
    Format settings : CABAC / 4 Ref Frames
    Format settings, CABAC : Yes
    Format settings, Reference frames : 4 frames
    Codec ID : avc1
    Codec ID/Info : Advanced Video Coding
    Duration : 32 min 43 s
    Bit rate : 20.5 Mb/s
    Width : 3 840 pixels
    Height : 2 160 pixels
    Display aspect ratio : 16:9
    Frame rate mode : Constant
    Frame rate : 25.000 FPS
    Color space : YUV
    Chroma subsampling : 4:2:0
    Bit depth : 8 bits
    Scan type : Progressive
    Bits/(Pixel*Frame) : 0.099
    Stream size : 4.69 GiB (100%)
    Writing library : x264 core 157 r2969 d4099dd
    Encoding settings : 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=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=8 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=50 / keyint_min=5 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=25.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
    Language : English
    Codec configuration box : avcC

X265 OUTPUT MEDIAINFO:

    Video
    ID : 1
    Format : HEVC
    Format/Info : High Efficiency Video Coding
    Format profile : Main@L4@Main
    Codec ID : hev1
    Codec ID/Info : High Efficiency Video Coding
    Duration : 32 min 43 s
    Bit rate : 5 186 kb/s
    Width : 1 920 pixels
    Height : 1 080 pixels
    Display aspect ratio : 16:9
    Frame rate mode : Constant
    Frame rate : 25.000 FPS
    Color space : YUV
    Chroma subsampling : 4:2:0 (Type 0)
    Bit depth : 8 bits
    Scan type : Progressive
    Bits/(Pixel*Frame) : 0.100
    Stream size : 1.19 GiB (100%)
    Encoding settings : 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=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=8 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=50 / keyint_min=5 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=25.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
    Language : English
    Color range : Limited
    Codec configuration box : hvcC

出力エンコード設定は、エンコーダ設定ではなくソースと一致しているようです。一部のファイルはまったく同じ設定で問題なくエンコードされますが、「コーデック フレーム サイズが設定されていません」という警告メッセージは表示されません。設定を何度か変更しましたが、問題のあるファイルで同じ結果になりました。1 回だけ発生した場合はソースに問題があると考えますが、エンコードした最後の 4 つのファイルのうち 2 つで発生したため、何かが欠けているに違いありません。出力のメタデータが間違っているだけかもしれませんが、よくわかりません。これは Handbrake では発生していません。FFMPEG の別のビルドを試しましたが、同じ問題が発生しました。

答え1

これは、2021年8月の変更により、libx265がエンコード前の入力フレーム内のSEIデータをエンコードされたパケットに伝達するようになったためです。これには、ソースから保存されたエンコード設定(存在する場合)が含まれます。変化他の種類の SEI データの伝達をサポートする必要性が動機でした。

これは保存された文字列にのみ影響します。エンコーダー パラメーターはユーザーが設定します。

開くバグチケット必要な情報とともに。

関連情報