![FFmpeg: Error al usar opciones de codificación copiadas de Mediainfo](https://rvso.com/image/1585758/FFmpeg%3A%20Error%20al%20usar%20opciones%20de%20codificaci%C3%B3n%20copiadas%20de%20Mediainfo.png)
Esta es mi línea de comando:
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
Y ffmpeg dijo:
[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
¿Qué tengo que hacer?
Respuesta1
No es necesario declarar decenas de opciones. Para eso están los ajustes preestablecidos de codificación x264. Su salida indica que elMás lentoSe utilizó el preajuste:
ffmpeg -i i.mp4 -i i.png -filter_complex 'overlay' -c:v libx264 -preset slower -c:a copy o1.mp4
Podría saber qué ajuste preestablecido se utilizó haciendo referencia a
x264 --fullhelp
.Esto utilizará CRF como método de control de tasa. Su salida utilizó el modo de 2 pasadas. A menos que necesite apuntar a un tamaño de archivo de salida específico (probablemente no lo necesite), simplemente use CRF. VerWiki FFmpeg: H.264para ver un ejemplo de 2 pasadas y más información sobre ajustes preestablecidos y CRF.
Respuesta2
Errores como estos:
[libx264 @ 000001ded1a53d60] Error parsing option 'mixed_ref = 1'.
provienen directamente de la función de x264 x264_param_parse()
, que utiliza ffmpeg.
Resulta que x264 informa las opciones fallidas de forma diferente a lo que esperaba al configurarlas. Puedes correlacionar los dos usando el código fuente de x264:
- Puede saber en qué variables internas se imprimenla función x264_param2string() en el código base de x264.
- Puede verificar qué opciones espera x264 al configurar estas variables enla
param_parse()
función.
Busqué algunas de estas discrepancias y resulta que esto es lo que necesitas usar:
╔══════════════════╦═══════════════════════════════════════════╗
║ 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... ║
║ ... ║ ║
╚══════════════════╩═══════════════════════════════════════════╝
Especialmente "rc" muestra que no hay suficiente correlación exacta para que esto sea fácilmente viable mediante ingeniería inversa. Por eso puede ser más fácil intentar hacer coincidir los valores con uno de los ajustes preestablecidos de x264.