Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1300016
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: LINUX

2011-03-06 19:51:58

想了解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了。这时,你的程序就能正常地播放音频视频了。

其他的注意事项:

  1. 例程中的capabilities我一直无法编译,每次都是gcc出段错误,这是MinGW的问题。或许换4.0+版本的MinGW可以解决。
  2. mplayer不提供音效选项
  3. Qt的插件机制非常严格,在加载时会核对库版本和编译器版本,不同的不会加载,所以你如果更换了编译器,可能仅仅是很小的版本变化,你的程序也可能出现phonon backend plugin could not be loaded 的情况。请保证你的phonon库,你的程序,以及你的后端插件由同一编译器编译,不然可能造成不可知的错误。
  4. phonon-mplayer在编译后会产生debug和release2个版本。如上条,插件检查机制非常严格,所以这两个版本就分别对应你自己程序的编译形式。好在phonon的插件检查是不按照文件名的,所以你把2个dll改成不重名都拷贝到插件目录中去,程序是会自动识别对应的插件的。
  5. 发布程序时请将插件放在 程序主目录/phonon_backend/ 下即可,注意只需要release版就可以了,如果你还没蛋疼到发布debug版的话
Relate Posts:

转载:http://blogold.chinaunix.net/u1/44301/showart_2029273.html

阅读(545) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~