我有一个720x480视频,显示宽高比为16:9,我想裁剪,调整大小和填充,但只是x264编码命令让我很头疼。
(Screenshot of 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))
输出尺寸为720x480,显示为853x480,符合预期。 但看起来框架已经垂直缩放了1.18因子然后裁剪到480的高度,所以我失去了框架的顶部和底部。实际上,行为等同于:
-vf "scale=720:569,crop=720:480:0:0"
虽然我认为宽高比在这里发挥作用(我认为1.18因素实际上是(16/9)/(720/480))但我很惊讶ffmpeg会突然出现这种情况。可能是比我更有知识的人可以解释一下吗?
答案 0 :(得分:2)
根据截图,这里没有错误。
你的来源是720x480,DAR 16:9,但Potplayer保持其视频窗口为720x480,同时服从M2V的宽高比,也就是说,第一个视频中的一些信箱填充是由Potplayer添加的,不在视频流。在输出中,水平画布适当地扩展到853像素。没有发生缩放。