昨天搞到零点才弄出来效果。本来不知道,原来Theora是一个纯开源项目。对Linux支持比较好,所以他的安装也应该遵循“Linux软件包安装规范”。那就是“永无止境”的包依赖。。于是乎,编译TheoraVideoPlugin必须先编译libtheora(http://theora.org/),ptypes(http://www.melikyan.com/ptypes/),libogg和libvorbis(http://www.vorbis.com/)。


整理一下,我基本上编译了如下动态库:


1. ptypes-2.1.1

2. libogg-1.1.4

3. libtheora-1.1.1

4. libvorbis-1.2.3


最后就是TheoraVideoPlugin,我使用的是SVN版(http://ogrevideo.svn.sourceforge.net/viewvc/ogrevideo/trunk)


关于依赖,TheoraVideoPlugin自己的描述如下:


*****************************************************************************
                This PlugIn uses the following resources:

Ogre - see above // 这是最基本的了
Ogg / Vorbis / Theora www.xiph.org
C++ Portable Types Library (PTypes - http://www.melikyan.com/ptypes/ )

*****************************************************************************


一路编译,基本没什么大问题。为了保持一致,我都选择release版(其他还有debug,optimized debug和SSE/SSE2)。

然后把得到的h/lib/dll整理出来,放到编译器找得到的地方,就可以开工了~~


看了一下TheoraVideoPlugin自带的demo,很简单,不过运行时老出错。于是就想,如果lib没问题,那就自己手动写一个吧。


1. 首先创建一个TheoraVideoManager的全局实例(这个和OGRE里的Root一样,都是继承自OGRE的Singleton~)

2. 设置输入文件名TheoraVideoManager::setInputName("konqi.ogg");可以使用OGRE的资源管理器,很方便

3. 创建视频到一个已定义的纹理上。哦,对了,首先你需要有个OGRE的纹理实例,可以手动写,也可以加载Material文件里的。

    createDefinedTexture("video_mat",ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);

4. 在FrameListener里调用TheoraVideoManager的frameStarted(),因为他也是继承自FrameListener的。


是啊,就这么简单。呵呵,当然,这只是将视频赋予了一个纹理通道上。要显示嘛,弄个Plane绑到场景节点上,把材质赋予给他,就OK了~


好了,留个截图。可以去睡觉了~~





Logo

更多推荐