【问题标题】:FFmpeg scaling issueFFmpeg 缩放问题
【发布时间】:2018-06-21 14:53:18
【问题描述】:

我正在尝试将视频从 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 编解码器进行缩放并且输入宽度为奇数的问题?如果是这样,是否有解决方法让视频缩放到指定大小?谢谢。

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    缩放是“正确的”,但视频的像素或s足够aspect ratio低于1(27:55 ~= 0.491),因此视频的有效显示比例与存储像素的宽高比不同。

    使用下面的-vf 表达式

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

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

    【讨论】:

    • 效果很好!即使 SAR 不低于 1,该命令还会通过提供宽度和您为高度提供的代码来缩放视频吗?我注意到如果我不应用“setsar-1”,该命令也对我有用。我喜欢它提供自动计算的宽度和高度,无论 SAR 是否低于 1。谢谢。
    • 是的,该命令适用于任何 SAR。比例过滤器自动设置 SAR。但由于舍入误差,它可能会略有偏差,例如0.999 因此setsar。
    猜你喜欢
    • 1970-01-01
    • 2017-02-08
    • 2021-07-08
    • 1970-01-01
    • 2019-05-24
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多