FFmpeg缩放问题

时间:2018-01-12 07:09:06

标签: ffmpeg

我正在尝试将视频从607x1080缩小到440宽度,并使用以下命令自动计算高度。它会缩放视频但不会缩放到指定的尺寸。即使下面的输出指示440x384,视频也会缩放到216x384。

ffmpeg -i video.mp4 -vf scale=440:-2 -c:v libx264 -c:a aac -y video-out.mp4

输出如下:

ffmpeg version N-87043-gf0f48884b0-static http://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.4.0 (Debian 6.4.0-2) 20170724
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
  libavutil      55. 74.100 / 55. 74.100
  libavcodec     57.103.100 / 57.103.100
  libavformat    57. 77.100 / 57. 77.100
  libavdevice    57.  7.101 / 57.  7.101
  libavfilter     6.100.100 /  6.100.100
  libswscale      4.  7.103 /  4.  7.103
  libswresample   2.  8.100 /  2.  8.100
  libpostproc    54.  6.100 / 54.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2017-12-13T19:49:15.000000Z
    encoder         : HandBrake 1.0.7 2017040900
  Duration: 00:00:04.37, start: 0.000000, bitrate: 10080 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1238x1080 [SAR 27:55 DAR 619:1100], 10244 kb/s, 30 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2017-12-13T19:49:15.000000Z
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)
    Metadata:
      creation_time   : 2017-12-13T19:49:15.000000Z
      handler_name    : Stereo
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x5aef920] using SAR=1215/2474
[libx264 @ 0x5aef920] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x5aef920] profile High, level 2.2
[libx264 @ 0x5aef920] 264 - core 152 r19 ba24899 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_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 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'video-out.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.77.100
    Stream #0:0(und): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 440x384 [SAR 7428:15125 DAR 619:1100], q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
    Metadata:
      creation_time   : 2017-12-13T19:49:15.000000Z
      handler_name    : VideoHandler
      encoder         : Lavc57.103.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2017-12-13T19:49:15.000000Z
      handler_name    : Stereo
      encoder         : Lavc57.103.100 aac
frame=  121 fps=0.0 q=29.0 size=       0kB time=00:00:04.33 bitrate=   0.1kbits/s speed=8.65x    
frame=  129 fps=0.0 q=-1.0 Lsize=     255kB time=00:00:04.37 bitrate= 478.0kbits/s speed=6.81x    
video:248kB audio:1kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.344491%
[libx264 @ 0x5aef920] frame I:1     Avg QP:22.07  size:  5065
[libx264 @ 0x5aef920] frame P:52    Avg QP:23.68  size:  4248
[libx264 @ 0x5aef920] frame B:76    Avg QP:24.30  size:   361
[libx264 @ 0x5aef920] consecutive B-frames: 12.4% 20.2% 20.9% 46.5%
[libx264 @ 0x5aef920] mb I  I16..4: 13.1% 81.7%  5.2%
[libx264 @ 0x5aef920] mb P  I16..4:  2.1%  5.2%  1.5%  P16..4: 36.4% 12.2%  8.2%  0.0%  0.0%    skip:34.4%
[libx264 @ 0x5aef920] mb B  I16..4:  0.2%  0.2%  0.1%  B16..8: 16.3%  1.3%  0.2%  direct: 0.5%  skip:81.2%  L0:42.2% L1:52.1% BI: 5.8%
[libx264 @ 0x5aef920] 8x8 transform intra:62.0% inter:70.3%
[libx264 @ 0x5aef920] coded y,uvDC,uvAC intra: 52.3% 45.2% 20.0% inter: 13.3% 10.0% 2.6%
[libx264 @ 0x5aef920] i16 v,h,dc,p: 17% 48% 11% 24%
[libx264 @ 0x5aef920] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  8% 35% 23%  5%  3%  2%  6%  3% 14%
[libx264 @ 0x5aef920] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:  8% 29% 16%  6%  7%  4% 12%  4% 14%
[libx264 @ 0x5aef920] i8c dc,h,v,p: 64% 26%  7%  2%
[libx264 @ 0x5aef920] Weighted P-Frames: Y:32.7% UV:5.8%
[libx264 @ 0x5aef920] ref P L0: 55.7% 22.1% 15.8%  5.8%  0.7%
[libx264 @ 0x5aef920] ref B L0: 77.8% 15.9%  6.3%
[libx264 @ 0x5aef920] ref B L1: 97.6%  2.4%
[libx264 @ 0x5aef920] kb/s:471.40
[aac @ 0x5b7e180] Qavg: 65536.000

我做了一些搜索并了解到这可能是使用libx264编解码器缩放的问题,输入宽度是奇数?如果是,是否有解决方法,以便将视频缩放到指定的大小?谢谢。

1 个答案:

答案 0 :(得分:1)

缩放是"正确",但视频下方有一个像素或 s 充足 a 强烈 r 1(27:55〜= 0.491)因此视频的有效显示比例与存储像素的宽高比不同。

使用下面的-vf表达式

-vf scale=440:2*trunc(ow/dar/2),setsar=1

除了比例,我将SAR重置为1。