一、现象:
最近写了个视频播放器(原理是使用ffmpeg解码,用Qt自带的opengl将YUV数据转成RGB数据并播放)。该播放器在windows平台下可以正常播放,但是移植到VMWare下的Ubuntu平台后无法正常播放,没有画面产生,如下图所示。其中VMWare版本为VMWare11,Ubuntu版本为64位14.04版本。
二、导致该现象的原因
经过研究,发现是VMWare11及之前的版本对opengl支持并不是那么乐观所导致。
三、解决方法
有两种方法可以解决该问题。第一种方法:在主机中装Ubuntu系统,或者装windows、Ubuntu的双系统。不在VMWare中使用opengl,改为在主机的Ubuntu中使用opengl。第二种方法是:还是在VMWare中使用opengl,但将VMWare更新为更新的版本(更新为VMWare12或以上的版本,VMWare12及以上的版本对opengl的支持更好)。下面我们讲述第二种方法的具体操作步骤:
首先,下载新版本的VMWare(这里以VMWare12为例),下载地址为http://www.xinsaisai.com/vmware-workstation-12.html。下载完后安装并覆盖原来的VMWare。这里要注意的是:如果电脑里面已经安装过VM|Ware(比如VMWare11),则直接安装VMWare12覆盖VMWare11原来的安装路径即可(比如原来VMWare11安装在D:\Software\VMware11下,则VMWare12也要安装在D:\Software\VMware11下。千万不要先卸载掉VMWare11再安装VMWare12,否则可能会导致无法正常安装。
安装完后我们可以在VMWare12中启动原来的Ubuntu系统,这个时候我们可能会发现启动原来的Ubuntu系统时会弹出如下提示:
然后启动Ubuntu后我们可能还是会发现无法正常播放视频(无法正常使用opengl)。
我们将Ubuntu关机,然后更改虚拟机的硬件兼容性为Workstation 12.0。如下图所示:
更改完成后我们重新启动Ubuntu,重新启动播放器,然后我们可以发现视频播放器播放视频成功了,证明了对opengl的支持生效了。