使用 FFmpeg 进行 VP9 编码

使用 FFmpeg 进行 VP9 编码

我想问是否ffmpeg支持 VP9 编码,如果不支持,我该如何编码 VP9 视频?我尝试使用以下命令:

./ffmpeg-vp9 -y -i /home/mc/test.mkv -t 00:00:30 -c:v libvpx-vp9 -strict -2 -quality good -b:v 600k -speed 16 -rc_lookahead 25 -pass 1 2.webm

但它显示拆分命令时出现错误(对于vp9)。这是输出ffmpeg -codecs | grep vpx

 ./ffmpeg -codecs|grep vpx
ffmpeg version N-51352-g81e85bc Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar 27 2013 19:22:53 with gcc 4.8.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 22.101 / 52. 22.101
  libavcodec     55.  2.100 / 55.  2.100
  libavformat    55.  0.100 / 55.  0.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 48.105 /  3. 48.105
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
 DEV.L. vp8                  On2 VP8 (decoders: vp8 libvpx ) (encoders: libvpx )

我尝试使用vpxenc但我不知道它的参数的确切含义。

提前致谢。

答案1

基本上ffmpeg支持 VP9 编码和解码。看来您的 libvpx 版本不支持 VP9。要获得 VP9 支持,您必须使用实验分支:

$ git clone -b experimental http://git.chromium.org/webm/libvpx.git
$ cd libvpx
$ ./configure --enable-vp9 --enable-shared
$ make && make install

这应该会启用 VP9 ffmpeg,您必须使用--enable-libvpx配置选项像往常一样进行编译。

答案2

关于 OP 对速度的评论。使用两遍编码。它比单遍编码快得多,而且图像质量也明显更好。

使用我的 ffmpeg 版本,

$ ffmpeg -version
ffmpeg version 2.3.3 Copyright (c) 2000-2014 the FFmpeg developers

我使用的命令是

ffmpeg -y -i input.mkv -c:v libvpx-vp9 -b:v 2000k -pass 1 -c:a opus -b:a 64k -f webm /dev/null
ffmpeg    -i input.mkv -c:v libvpx-vp9 -b:v 2000k -pass 2 -c:a opus -b:a 64k -f webm output.webm

根据http://wiki.webmproject.org/vp9/known-issues

答案3

只要链接的 libvpx 在启用 VP9 的情况下编译,FFMPEG 就支持 VP9。但是,编码速度非常慢,即使是短片 1080p 剪辑也要花很长时间才能完成。

相关内容