![FFmpeg: Fehler beim Verwenden von aus Mediainfo kopierten Kodierungsoptionen](https://rvso.com/image/1585758/FFmpeg%3A%20Fehler%20beim%20Verwenden%20von%20aus%20Mediainfo%20kopierten%20Kodierungsoptionen.png)
Dies ist meine Befehlszeile:
ffmpeg -i i.mp4 -i i.png -c:v libx264 -x264-params cabac=1:ref=8:deblock=1,0,0:analyse=0x3,0x113:me=umh:subme=9:psy_rd=1.0,0.0:mixed_ref=1:me_range=64:chroma_me=1:trellis=2:8x8dct=1:cqm=0:deadzone=21,11:chroma_qp_offset=-2:threads=3:nr=0:decimate=1:mbaff=0:bframes=5:b_pyramid=1:b_adapt=2:b_bias=0:direct=3:wpredb=1:keyint=300:keyint_min=1:scenecut=54:rc=2pass:bitrate=75:ratetol=1.0:qcomp=0.64:qpmin=8:qpmax=51:qpstep=4:cplxblur=20.0:qblur=0.5:ip_ratio=1.40:pb_ratio=1.30:aq=1,1.00 -c:a copy -filter_complex 'overlay' o1.mp4
Und ffmpeg sagte:
[libx264 @ 000001ded1a53d60] Error parsing option 'mixed_ref = 1'.
[libx264 @ 000001ded1a53d60] Error parsing option 'deadzone = 21,11'.
[libx264 @ 000001ded1a53d60] Error parsing option 'decimate = 1'.
[libx264 @ 000001ded1a53d60] Error parsing option 'mbaff = 0'.
[libx264 @ 000001ded1a53d60] Error parsing option 'direct = 3'.
[libx264 @ 000001ded1a53d60] Error parsing option 'wpredb = 1'.
[libx264 @ 000001ded1a53d60] Error parsing option 'rc = 2pass'.
[libx264 @ 000001ded1a53d60] Error parsing option 'ip_ratio = 1.40'.
[libx264 @ 000001ded1a53d60] Error parsing option 'pb_ratio = 1.30'.
[libx264 @ 000001ded1a53d60] Error parsing option 'aq = 1,1.00'.
[libx264 @ 000001ded1a53d60] can't open file '0'
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Was soll ich machen?
Antwort1
Es ist nicht nötig, Dutzende von Optionen zu deklarieren. Dafür sind die x264-Kodierungsvorgaben da. Ihre Ausgabe zeigt an, dass dieLangsamerVorgabe wurde verwendet:
ffmpeg -i i.mp4 -i i.png -filter_complex 'overlay' -c:v libx264 -preset slower -c:a copy o1.mp4
Welche Voreinstellung verwendet wurde, konnte ich anhand von erkennen
x264 --fullhelp
.Dies wird CRF als Rate Control-Methode verwenden. Ihre Ausgabe verwendet den 2-Pass-Modus. Wenn Sie nicht auf eine bestimmte Ausgabedateigröße abzielen müssen (was wahrscheinlich nicht der Fall ist), verwenden Sie einfach CRF. SieheFFmpeg-Wiki: H.264für ein 2-Pass-Beispiel und weitere Informationen zu Voreinstellungen und CRF.
Antwort2
Fehler wie diese:
[libx264 @ 000001ded1a53d60] Error parsing option 'mixed_ref = 1'.
kommen direkt von der Funktion von x264 x264_param_parse()
, die ffmpeg verwendet.
Es stellt sich heraus, dass x264 die fehlgeschlagenen Optionen anders meldet, als es beim Setzen erwartet. Sie können die beiden mithilfe des Quellcodes von x264 korrelieren:
- Sie können erkennen, welche internen Variablen indie Funktion x264_param2string() in der Codebasis von x264.
- Welche Optionen x264 erwartet, können Sie beim Setzen dieser Variablen indie
param_parse()
Funktion.
Ich habe einige dieser Nichtübereinstimmungen nachgeschlagen und es stellte sich heraus, dass Sie Folgendes verwenden müssen:
╔══════════════════╦═══════════════════════════════════════════╗
║ printed value ║ setting ║
╠══════════════════╬═══════════════════════════════════════════╣
║ mixed_ref ║ mixed-refs ║
║ deadzone = X,Y ║ deadzone-inter=X:deadzone-intra=Y ║
║ decimate ║ dct-decimate ║
║ direct = 0/1/2/3 ║ direct="none"/"spatial"/"temporal"/"auto" ║
║ rc ║ implied by qp, abr, crf, 2-pass mode... ║
║ ... ║ ║
╚══════════════════╩═══════════════════════════════════════════╝
Insbesondere „rc“ zeigt, dass es keine ausreichend genaue Korrelation gibt, um dies leicht rückwärts entwickeln zu können. Deshalb ist es möglicherweise einfacher, zu versuchen, die Werte einer der Voreinstellungen von x264 zuzuordnen.