Falsche Einstellungen für die FFMPEG x265-Kodierung für einige Quellen

Falsche Einstellungen für die FFMPEG x265-Kodierung für einige Quellen

Ich versuche, eine Datei mit dieser Befehlszeile zu kodieren:

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

Einige Dateien werden mit sehr unterschiedlichen Kodierungseinstellungen zurückgegeben. Sogar das CRF in Mediainfo ist falsch. Wenn dies geschieht, wird eine Warnung angezeigt, die besagt:

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

Ich habe dies gegoogelt und niemand scheint zu erwähnen, dass diese Warnung ein Problem verursacht.

Ich verwende einen ziemlich neuen Build: ffmpeg version 2021-10-03-git-2761a7403b-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers erstellt mit gcc 10.3.0 (Rev5, erstellt vom MSYS2-Projekt).

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

Die Ausgabe-Kodierungseinstellungen scheinen mit denen der Quelle übereinzustimmen und nicht mit meinen Kodierungseinstellungen. Einige Dateien werden mit genau denselben Einstellungen problemlos kodiert, haben aber nicht die Warnmeldung „Codec-Framegröße ist nicht festgelegt“. Ich habe die Einstellungen ziemlich oft geändert und bei den Problemdateien dasselbe Ergebnis. Wenn es nur einmal passiert wäre, hätte ich auf ein Problem mit der Quelle gehofft, aber es ist bei 2 der letzten 4 Dateien passiert, die ich kodiert habe, also muss mir etwas entgangen sein. Es könnten einfach falsche Metadaten in der Ausgabe sein, aber ich weiß es nicht genau. Dies passiert nicht in Handbrake, ich habe es mit einem anderen Build von FFMPEG versucht, dasselbe Problem.

Antwort1

Dies ist auf eine Änderung im August 2021 zurückzuführen, bei der libx265 alle SEI-Daten in den vorkodierten Eingabeframes an die kodierten Pakete weiterleitet. Dies schließt Kodierungseinstellungen, sofern welche gespeichert wurden, aus der Quelle ein. Dieändernwurde durch die Notwendigkeit motiviert, die Übermittlung anderer Arten von SEI-Daten zu unterstützen.

Dies betrifft nur die gespeicherte Zeichenfolge. Die Encoderparameter werden vom Benutzer festgelegt.

Öffne einFehlerticketmit den benötigten Informationen.

verwandte Informationen