如何让libvpx-vp9编码器的CBR正常工作?

问题描述

我有一个使用 obs 录制的比特率为 6000 的视频。我想用VP9压缩成1000码率的视频,但是VP9的CBR好像不行。我得到的比特率总是大于 1000,但 x264 编码器可以正常工作。如何调整编码参数?以下分别是使用x264和libvpx-vp9的命令行日志。

1、libvpx-vp9 1.8.0(设置cbr 1M,但得到1500kbits/s)

命令:

ffmpeg -i test1.flv -threads 8 -t 00:01:00 -c:v libvpx-vp9 -quality realtime -speed 5 -minrate 1M -maxrate 1M -b:v 1M output_cbr.webm -y

日志

ffmpeg version git-2021-01-04-c56f3149 copyright (c) 2000-2020 the FFmpeg developers
  configuration: --toolchain=msvc --enable-yasm --target-os=win32 --arch=x86 --enable-asm --disable-bzlib --disable-doc --enable-shared --disable-static --enable-libopus --enable-libvpx --enable-libvorbis --enable-libx264 --enable-gpl --enable-ffnvcodec --enable-zlib --enable-libzimg --enable-opencl --enable-cuda --disable-ffprobe --disable-ffplay --prefix=/d/data/ffmpeg_deps/prebuilt/share --extra-cflags='-MD -D_WINDLL -I/d/data/ffmpeg_deps/vs2015/x86/include' --extra-ldflags='-LIBPATH:/d/data/ffmpeg_deps/vs2015/x86/lib'
  libavutil      56. 41.100 / 56. 41.100
  libavcodec     58. 69.100 / 58. 69.100
  libavformat    58. 38.100 / 58. 38.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 76.100 /  7. 76.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0,flv,from 'test1.flv':
  Metadata:
    encoder         : Lavf57.84.100
  Duration: 00:01:35.93,start: 0.000000,bitrate: 6157 kb/s
    Stream #0:0: Video: h264 (Constrained Baseline),yuv420p(progressive),1920x1080,6000 kb/s,30.30 fps,30 tbr,1k tbn,60 tbc
    Stream #0:1: Audio: aac (LC),44100 Hz,stereo,fltp,160 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> vp9 (libvpx-vp9))
  Stream #0:1 -> #0:1 (aac (native) -> opus (libopus))
Press [q] to stop,[?] for help
[libopus @ 014299C0] No bit rate set. Defaulting to 96000 bps.
[libvpx-vp9 @ 03110B40] v1.8.0
Output #0,webm,to 'output_cbr.webm':
  Metadata:
    encoder         : Lavf58.38.100
    Stream #0:0: Video: vp9 (libvpx-vp9),yuv420p,q=-1--1,1000 kb/s,30 fps,30 tbc
    Metadata:
      encoder         : Lavc58.69.100 libvpx-vp9
    Side data:
      cpb: bitrate max/min/avg: 1000000/1000000/1000000 buffer size: 0 vbv_delay: N/A
    Stream #0:1: Audio: opus (libopus),48000 Hz,flt,96 kb/s
    Metadata:
      encoder         : Lavc58.69.100 libopus
frame= 1800 fps= 45 q=0.0 Lsize=   11370kB time=00:01:00.01 bitrate=1552.1kbits/s speed= 1.5x
video:10865kB audio:471kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.301704%

2、x264(设置cbr 1M,得到1008kbits/s)

CMD:

ffmpeg -i test1.flv -c:v libx264 -t 00:01:00 -threads 8 -minrate 1M -maxrate 1M -b:v 1M output_x264.MP4 -y

日志

[libx264 @ 055F0440] VBV maxrate specified,but no bufsize,ignored
[libx264 @ 055F0440] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 UnalignedStack
[libx264 @ 055F0440] profile High,level 4.0,4:2:0,8-bit
[libx264 @ 055F0440] 264 - core 159 r2991 - H.264/MPEG-4 AVC codec - copyleft 2003-2019 - 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=8 lookahead_threads=1 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=abr mbtree=1 bitrate=1000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[AVFiltergraph @ 005B2B00] initializing filter anull=(null)
Output #0,mp4,to 'output_x264.MP4':
  Metadata:
    encoder         : Lavf58.38.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661),15360 tbn,30 tbc
    Metadata:
      encoder         : Lavc58.69.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 1000000/0/1000000 buffer size: 0 vbv_delay: N/A
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D),128 kb/s
    Metadata:
      encoder         : Lavc58.69.100 aac
frame= 1800 fps= 54 q=-1.0 Lsize=    8409kB time=00:01:00.02 bitrate=1147.7kbits/s speed=1.81x
video:7388kB audio:943kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.940029%
[libx264 @ 055F0440] frame I:Count 13    Avg QP:31.98  size: 45317 Total:Size 589117
 frame P:Count 811   Avg QP:37.55  size:  6364 Total:Size 5161200
 frame B:Count 976   Avg QP:41.60  size:  1859 Total:Size 1814348
 consecutive B-frames: 24.3%  5.1% 15.0% 55.6%
[libx264 @ 055F0440] mb I  I16..4: 19.4% 70.7%  9.9%
[libx264 @ 055F0440] mb P  I16..4:  2.5%  4.0%  0.1%  P16..4: 19.5%  1.2%  0.6%  0.0%  0.0%    skip:72.2%
[libx264 @ 055F0440] mb B  I16..4:  0.3%  0.4%  0.0%  B16..8: 11.6%  0.4%  0.0%  direct: 0.2%  skip:87.1%  L0:45.6% L1:53.7% BI: 0.8%
[libx264 @ 055F0440] final ratefactor: 36.67
[libx264 @ 055F0440] 8x8 transform intra:62.3% inter:93.7%
[libx264 @ 055F0440] coded y,uvDC,uvAC intra: 20.8% 45.2% 11.6% inter: 1.6% 3.3% 0.1%
[libx264 @ 055F0440] i16 v,h,dc,p: 30% 36% 12% 21%
[libx264 @ 055F0440] i8 v,ddl,ddr,vr,hd,vl,hu: 16% 13% 43%  5%  5%  4%  6%  4%  4%
[libx264 @ 055F0440] i4 v,hu: 23% 23% 19%  7%  8%  6%  7%  5%  4%
[libx264 @ 055F0440] i8c dc,v,p: 70% 16% 11%  2%
[libx264 @ 055F0440] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 055F0440] ref P L0: 72.5% 13.4%  9.9%  4.2%
[libx264 @ 055F0440] ref B L0: 88.5%  7.5%  4.0%
[libx264 @ 055F0440] ref B L1: 97.2%  2.8%
[libx264 @ 055F0440] kb/s:1008.62
[aac @ 005C3E00] Qavg: 311.192

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...