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.