ffmpeg странное поведение кодирования x264
У меня есть видео 720x480 с соотношением сторон экрана 16:9, которое я хочу обрезать, изменить размер и заполнить, но только команда кодирования x264 доставляет мне головную боль.
( Снимок экрана input.m2v) Вот моя команда:
ffmpeg -ss 1861 -i input.m2v -c:v libx264 -profile:v main -preset:v medium -level 3.1 -x264opts crf=21.228 -t 60 -y -f mp4 output.mp4
А вот и вывод ffmpeg:
Input #0, mpegvideo, from 'input.m2v':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: mpeg2video (Main), yuv420p(tv), 720x480 [SAR 32:27 DAR 1
6:9], max. 6605 kb/s, 31.02 fps, 59.94 tbr, 1200k tbn, 59.94 tbc
[libx264 @ 02ba84c0] using SAR=32/27
[libx264 @ 02ba84c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 02ba84c0] profile Main, level 3.1
[libx264 @ 02ba84c0] 264 - core 144 r2525 40bb568 - H.264/MPEG-4 AVC codec - Cop
yleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
lock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 m
e_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chro
ma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1
interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scene
cut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=21.2 qcomp=0.60 qpmin
=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
Metadata:
encoder : Lavf56.19.100
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 720x48
0 [SAR 32:27 DAR 16:9], q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc
Metadata:
encoder : Lavc56.21.102 libx264
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))
Выходной размер - 720х480, отображается как 853х480, как и ожидалось. Но похоже, что кадр был масштабирован по вертикали в 1,18 раза, а затем обрезан до высоты 480, так что я теряю верх и низ кадра. На самом деле, поведение эквивалентно:
-vf "scale=720:569,crop=720:480:0:0"
Хотя я предполагаю, что соотношение сторон здесь играет роль (я думаю, что коэффициент 1.18 действительно (16/9)/(720/480)), я удивлен, что ffmpeg сделал бы это на ровном месте. Может быть, кто-то более знающий, чем я, мог бы это объяснить?
1 ответ
Судя по скриншотам, здесь нет ошибки.
Ваш источник - 720x480 с DAR 16:9, но Potplayer сохраняет свое видеоокно на 720x480, в то же время соблюдая форматное соотношение M2V, то есть, некоторые из отступов почтового ящика в первом видео добавляются Potplayer и отсутствуют в видеопотоке., На выходе горизонтальный холст соответствующим образом расширяется до 853 пикселей. Масштабирование не произошло.