libvpx是谷歌发布的支持vp8、vp9编码解码的开源软件。这是针对h264有专利费而推出的替代方案。这里就进行编译和测试一下其使用。
先获取源码:git clone https://github.com/webmproject/libvpx.git
编译的过程参考README文件,为了能在Windows下编译,我决定使用cygwin的环境。
编译的过程还是比较顺利的,出来了vpxenc.exe和vpxdec.exe。
下面进行vp9编码测试,命令如下:
$ ./vpxenc.exe -w 848 -h 478 --nv12 --ivf -o test.ivf test.yuv
这之前需要准备一个yuv文件,这个容易,从一个视频文件中产生即可,由于yuv文件占用空间较大,可以控制产生的时长(-t参数)或帧数(-frames参数)。下面这行命令产生一个5秒nv12格式的yuv文件:
ffmpeg -i test.mp4 -t 5 -an -pix_fmt nv12 test.yuv
如果产生yuv420p格式的,只要把上面的nv12替换为yuv42p即可。这个yuv文件里每一帧图像的尺寸和原视频是一样的,在编码的时候要指定给w和h参数。
补充:
如果想用VC编译libvpx也是可以的,需要生成VC工程文件。
../libvpx/configure --target=x86_64-win64-vs16 --enable-static-msvcrt --disable-install-docs
接着执行make就生成好了。
以上是生成VC2019工程文件的命令。编译的时候,会提示asm文件无法编译,这就需要把yasm.exe加到环境变量的Path里去,cygwin自带了yasm,它的路径是:C:\cygwin64\bin\。