年初Google正式收购了On2公司,关于On2的VP系列视频编码器将实现开源的说法就被广泛地提出来。On2大概在08年底就放出了关于VP8的几 篇王婆卖瓜的文章,但是一直都没有放出任何一个能压制VP8的软件。直到昨天(5月19日),也就是Google完成On2收购后的整整 3个月,Google终于发布了其新WebM项目,而其中最重要的部分就是libvpx,也就是 一个开源的VP8编码解码器。另外,Google在MKV格式的基础上,为libvpx开发了一个新的专用封包格式WebM。但是经 过实际测试,VP8不仅同样支持普通的MKV封包格式,甚至也能支持老的AVI封包格式(目前来看VP8不支持B帧,因此比xvid、x264之类广泛使 用B帧的编码器更兼容 AVI)。
libvpx通过一个专门制定的、类似BSD协议的WebM协议发布,目前开源社区对它的态度尚没有完全确定的迹象,在一星期内对libvpx的支持应该不会正式进入ffmpeg和mplayer的源码树。Google官方发布了libvpx的源码及ffmpeg/mplayer支持libvpx、以及通过修改已有的MKV支持来支持WebM的patch。
我今天下午在MinGW 4.3.3 TDM-1平台成功编译了libvpx和支持libvpx、WebM的ffmpeg、mplayer。ffmpeg 使用vp8压制视频的参数为-vcodec libvpx_vp8, 标准的-b、 -g参数可用,其他可用参数可以参考vp8的四个preset(我一起打在压缩包中了),如果用ffmpeg默认设置,一定要加上-qmax 51,默认的qmax(31)对于VP8来说Q值无法满足码率控制的需求。libvpx_vp8支持的封装格式据我实际测试,至少包括webm、mkv、 mov和avi。至于mencoder,因为困扰了很长时间的mingw gcc生成SSE指令不稳定的问题,我只能在禁用了SSE的mencoder中成功输出VP8视频部分的AVI文件,而且qmax不能大于31(这应该还 是mencoder的问题)。

ffmpeg 2pass 输出webm文件

mencoder 1pass输出VP8编码的AVI文件

mplayer 播放VP8编码的AVI

目前能下到的非开源VP8压缩程序Wildform Flix WebM,问题很多。
我粗略编码了一些文件,粗略觉得VP8比flv1、vp6和xvid都强,和frameref=1,关闭bframe和所有main、high profile功能的simple H264完全可以一拼,但是和main、high的H264相比可能还有点差距。这是第一个发布版,也许在彻 底开源化后开源社区可以让它和Theora一样最终脱胎换骨,打败H264。
如果需要使用DirectShow框架的播放器播放WebM 文件和VP8编码的AVI文件,请安装Google的VP8 Directshow解码器vp8decoder.dll、WebM分离器webmsplit.dll、WebM源筛选器webmsource.dll。 可以从http://code.google.com/p/webm/downloads/list中下载 webmdshow-0.9.5.0-20100518.zip,然后手工安装。