https://github.com/zytc2009/BigTeam_learning
分类:
2009-08-16 18:50:20
想了解Phonon的请看前文
这里说下怎么用MinGW编译Phonon
网上可以找到一些文章关于MinGW+Phonon的,几乎都说MinGW。但是从上文的分析可以知道,Phonon只是一个接口,根本不存在平台相关性。连Qt文档里也仅仅是说:
Warning: The MinGW version of Qt does not support building the Qt backend.
也就是说MinGW可以编译Phonon!不能编译的仅仅是后端插件。至于原因,大概是因为DirectX 的SDK和MinGW的兼容性不怎么好吧。后端问题下面另有解决方案!
所以用MinGW编译Phonon很简单,在Qt做configure的时候加上phonon的选项就可以,编译phonon-backend的选项最好还是去掉,加了也只会给之后的编译造成麻烦,具体参数用configure --help查询。
configure完成之后,如果你做出改动的只有Phonon库,那你完全不必把Qt的其他部分一一编译,只需进入src/phonon/,把phonon编译即可。在这过程中一般不会发生问题,编译完成后,你就在lib/里得到了phonon的库文件了(默认是动态库)
此时,你的phonon程序已经可以编译了。你可以把Qt demo中的mediaplayer和musicplayer拿来编译,都可以生产可执行文件,也可以执行。但是运行时会弹出phonon backend plugin could not be loaded 。这就是缺少后端插件的情况,这时的程序除了显示出界面什么都不能干。
接下去我们就要想办法找一个可以控制音视频解码播放的后端,并且写一个插件让phonon可以调用这个后端。基本上,这是一件相当麻烦的事情。幸好有高人已经替我们把烦人的事情都做了。
是一个用vlc或者mplayer来做phonon后端的项目,他提供了vlc/mplayer的后端插件源码。现在发布的版本只支持mplayer了,因为支持vlc的版本另外有人写了,链接可以在上面找。详细的情况都可以在该项目主页上查到。
但这个项目不能直接拿来用,因为他使用了比Qt所带的更新版本的phonon库,和Qt自带库不匹配。要么替换掉Qt的phonon库到最新版,要么就是改插件。其实最新版的增加功能也就字幕和声道切换,为了保证最大兼容性,咱们还是改插件吧。
这里提供改好的插件源代码:
项目管理我已经改成qmake了。首先进入libmplayer子目录编译,将mplaye的控制端编译成静态库。
qmake
make
在release文件夹下生成的libmplayer.a就是静态库。把这个文件copy到libmplayer子目录下。
然后再到回到phonon-mplayer目录编译即可得到插件。
把编译完的插件(dll文件)拷贝到Qt主目录下的plugins/phonon_backend。之后你的程序中的Phonon就能找到他了。
但这时你还不能用,因为你还没有作为后端的mplayer。
网上去找个好用的mplayer下载了,把mplayer.exe和相关文件拷贝到 程序主目录/mplayer/ 下,你的插件就能调用mplayer了。这时,你的程序就能正常地播放音频视频了。
其他的注意事项: