FFmpeg: Ошибка при использовании параметров кодирования, скопированных из Mediainfo

FFmpeg: Ошибка при использовании параметров кодирования, скопированных из Mediainfo

Вот моя командная строка:

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

И ffmpeg сказал:

[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

Что я должен делать?

решение1

Не нужно объявлять десятки опций. Для этого и предназначены предустановки кодирования x264. Ваш вывод показывает, чтопомедленнееБыла использована предустановка:

ffmpeg -i i.mp4 -i i.png -filter_complex 'overlay' -c:v libx264 -preset slower -c:a copy o1.mp4
  • Я мог определить, какой пресет использовался, обратившись к x264 --fullhelp.

  • Это будет использовать CRF как метод управления скоростью. Ваш вывод использовал 2-проходной режим. Если вам не нужно нацеливаться на определенный размер выходного файла (вероятно, нет), то просто используйте CRF. СмотритеFFmpeg Вики: H.264для примера с двумя проходами и дополнительной информации о предустановках и CRF.

решение2

Ошибки, такие как:

[libx264 @ 000001ded1a53d60] Error parsing option 'mixed_ref = 1'.

поступают напрямую из функции x264 x264_param_parse(), которую использует ffmpeg.

Оказывается, x264 сообщает об ошибках в параметрах иначе, чем он ожидает при их установке. Вы можете сопоставить эти два параметра, используя исходный код x264:

Я просмотрел некоторые из этих несоответствий, и оказалось, что это то, что вам нужно использовать:

╔══════════════════╦═══════════════════════════════════════════╗
║ 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...   ║
║ ...              ║                                           ║
╚══════════════════╩═══════════════════════════════════════════╝

Особенно "rc" показывает, что нет достаточно точной корреляции, чтобы сделать это легко поддающимся обратному проектированию. Вот почему может быть проще попытаться сопоставить значения с одним из пресетов x264.

Связанный контент