zoukankan      html  css  js  c++  java
  • Phonon MinGW 编译指南

    这里说下怎么用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可以调用这个后端。基本上,这是一件相当麻烦的事情。幸好有高人已经替我们把烦人的事情都做了。

    phonon-vlc-mplayer是一个用vlc或者mplayer来做phonon后端的项目,他提供了vlc/mplayer的后端插件源码。现在发布的版本只支持mplayer了,因为支持vlc的版本另外有人写了,链接可以在上面找。详细的情况都可以在该项目主页上查到。

    但这个项目不能直接拿来用,因为他使用了比Qt所带的更新版本的phonon库,和Qt自带库不匹配。要么替换掉Qt的phonon库到最新版,要么就是改插件。其实最新版的增加功能也就字幕和声道切换,为了保证最大兼容性,咱们还是改插件吧。

    这里提供改好的插件源代码:phonon-mplayer.zip

    项目管理我已经改成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版的话
  • 相关阅读:
    How to create jar for Android Library Project
    Very large tabs in eclipse panes on Ubuntu
    64bit Ubuntu, Android AAPT, R.java
    Linux(Ubuntu)下如何安装JDK
    Configure xterm Fonts and Colors for Your Eyeball
    建立、配置和使用Activity——启动其他Activity并返回结果
    建立、配置和使用Activity——使用Bundle在Activity之间交换数据
    建立、配置和使用Activity——启动、关闭Activity
    建立、配置和使用Activity——Activity
    异步任务(AsyncTask)
  • 原文地址:https://www.cnblogs.com/xmphoenix/p/1965662.html
Copyright © 2011-2022 走看看