Qt官网上下载的源代码在编译时并没有将phonon继承进去,只提供了源代码,而在Win7+VS2005中编译phonon时遇到不少的问题,因为phonon只是一个前端程序,要使用其实现多媒体的播放还需要配合Qt基本库、phonon_backend(后端插件)和多媒体播放后台等等。

phonon只提供了一套API接口给客户端程序调用,同时为后端插件提供一个规范,向后端插件传递客户端程序发出的指令,并且从后端插件返回给客户端程序当前媒体的状态和信息,起到桥梁的作用。而后端插件才是实际进行读入媒体、解码并且播放的部分,所以要在Qt环境下使用phonon需要:
  1. 编译Phonon库:通常情况下Qt默认没有编译Phonon以及Phonon_backend,需要在configure时加入-phonon和-phonon-backend参数,然后单独进入phohoh文件夹进行编译即可;
  2. 编译Phonon后端插件:Qt为3大平台提供了一个可用的后端插件,放在src/plugins/phonon目录下。进入目录编译即可,Qt会自动选择当前系统对应的后端插件。对于Windows平台,Qt只提供了DirectShow这个后端插件,并且调用的是DX的SDK,所以只能由VC编译,如果是MinGW用户,可以选择-phonon-vlc-mplayer作为后端插件;而DirectShow同样也只是一个框架,解码还得靠系统里安装的解码器和滤镜,下面要详细说明的就是编译这个后端插件的过程;
  3. 在后端插件编译完成后,可以运行Demo中的mediaplayer测试;
安装Microsoft .Net Framework 4.0 Full
安装Win7 SDK前需要安装Microsoft .Net Framework 4.0 Full,到微软官网下载安装程序安装即可;
 
 
安装Win7 SDK
安装Win7 SDK之前确保所有VC运行库(vc++ x86/64 runtime/redistributable)版本不能大于10.0.30319,如存在大于此版本的运行库则卸载,否则会导致编译失败;
卸载完高版本的运行库后开始安装SDK,默认选项:
 
重新配置Qt编译选项
安装完毕后运行Visual Studio 2005 Command prompt,重新configure Qt,先nmake confclean一次,清除以前配置过的文件;
清理完毕后重新配置Qt编译命令:configure -debug-and-release -platform win32-msvc2005 -plugin-sql-sqlite -plugin-sql-odbc -phonon -phonon-backend -vcproj
 
单独编译Phonon以及Phonon backend
重新配置完毕后直接进入phonon目录编译phonon库%QTDIR%\src\phonon,编译完毕后再进入%QTDIR%\src\plugins\phonon 编译phonon backend,此时会报错找不到dshow.h文件,原因是没有将平台SDK include文件的路径添加到环境变量中去,运行脚本:C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd
然后再nmake一次即可编译出phonon_ds9d4.dll和phonon_ds94.dll,
 
测试
此时运行Qt自带的例子
打开媒体播放没问题说明编译成功。
 
总结
  1. 此前根据诺基亚开发文档说明,为phonon的编译准备安装了DirectX SDK,后来重新编译一次以后发现不知从何时开始DirectShow已经被整合到Platform SDK中去,此次编译安装的Platform SDK版本为7.1,已经包含DirectShow,所以无需再安装DirectX SDK。
  2. 关于安装Microsoft .Net Framework 4.0 Full,第一次在台式机编译phonon时因为台式机已经安装Visual Studio 2010,自带Microsoft .Net Framework 4.0,但不知道是否完整版本,后来编译通过了;第二次编译Phonon在笔记本中,环境为Win7+Visual Studio 2005,没有手动安装Microsoft .Net Framework 4.0 Full,但已经手动打完所有Windows更新补丁,通过更新程序检查已无更新可用,编译Phonon一样通过。
  3. 关于运行C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd,此脚本须在Visual Studio 2005 Command prompt命令行窗口中执行,设置的环境变量仅对当前编译的工程有效,本人一开始以为在windows的cmd窗口中执行可以设置系统环境变量,后来编译phonon backend的时候还是报错,找不到dshow.h文件,才知道要在当前编译命令行窗口中执行此脚本。
  4. 从新配置Qt编译选项后无须再重新全编译一次Qt,选择性编译phonon和phonon backend就可以,节省时间。

转载请注明:http://www.cnblogs.com/bingcaihuang/archive/2013/03/21/2972721.html

Win7+VS2005编译Qt4.7.3+phonon(需要安装新版本Windows SDK)的更多相关文章

  1. VS2005 编译 Qt4.8.2库,并修正源码中的错误

    从昨天开始利用VS2005对Qt4.8.2库进行编译,在编译到某个文件时,总是报错,提示VS的cl.exe和nmake.exe返回致命错误.错误罗列如下: DefaultLocalizationStr ...

  2. VS2005编译QT4.8.2

    为什么要编译? 因为安装安装版的QT4.8.2,vs2005编译报错. 1.下载QT4.8.2,qt-everywhere-opensource-src-4.8.2.zip,下载vs-AddIn1.1 ...

  3. vs2005编译QT4.5版本

    1. 下载代码:qt-win-opensource-src-4.5.02. 设置环境变量 Add to PATH: ‘;%QTDIR%/bin’3. 输入cmd,启动到vs2005安装目录下,进入Mi ...

  4. 使用VS2005安装和编译QT4.53源码

    学习Qt,当然是QT4好.可是装了4.86以后,网上下载的书中的例子大多无法直接用VS执行(个人不喜欢用QT Creator),即打开pro转换的时候出错(我也懒的研究为什么出错了).看了一下发布时间 ...

  5. Qt与VS2005/2008的完美配合(自己编译Qt4.5.1的详细步骤)

    介绍 用过Linux的人想必都知道Qt(不是QuickTime,呵呵)这个名称,KDE就是用Qt写的,我也是接触Linux后才认识它的. Qt原先是奇趣科技TM(Trolltech)的产品,由Haav ...

  6. 如何在其他电脑上运行VS2005编译的DEBUG版应用程序

    做项目的过程中,遇到这样的问题:在自己的电脑上用VS2005编译好的DEBUG版程序在其它的没有安装VS2005的电脑上没有办法运行,郁闷至极啊. 直 接拷贝文件后,错误信息如下:"This ...

  7. Windows下MinGW编译Qt4

    还真不是吹,这个问题折磨我一天……前些天转载了一篇关于<Eclipse+Qt开发环境设置>和<Eclipse+MinGW+Qt开发环境设置>两片文章,里面讲述了QT的开源版本q ...

  8. Darwin Streaming Server用vs2005编译运行过程

    原创. 一:编译 Darwin6.0.3版本是最新版本,也提供了.dsw文件.但是使用vs2005和vc6是编译不过的.所以,采用Darwin5.5.5版本.使用vc6打开WinNTSupport文件 ...

  9. Windows环境下使用VS2005编译OpenSSL

    如何Windows环境下,使用VS2005编译OpenSSL,虽然这个问题在Baidu.Google上一堆,但安装中还是遇到些问题,在这里 记录下来希望能帮助大家不要在走弯路.注:我是在WinXP S ...

随机推荐

  1. http://blog.csdn.net/jun55xiu/article/details/43051627

    http://blog.csdn.net/jun55xiu/article/details/43051627

  2. js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则

    最近一直在笔试面试,经常碰到例如 123=='123'.'abc'==true等问题,其中有答对的,也有答错的,主要原因还是对ECMAScript的规范没有理解清楚,很多题目没有具体分析所导致.现查阅 ...

  3. const 与指针

    深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p ...

  4. JS实现上下左右四方向无间隙滚动

    想必大家都注意到<marquee>的不循环滚动,所以出现了很多替代脚本,或iframe或JS输出< marquee>,不管怎么做,都略显麻烦.下面说一下这个相对简单的实现思路: ...

  5. java截取图片部分尺寸

    package util; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; i ...

  6. iOS-OC根据时间戳获取距离现在的状态(刚刚,分钟前,今天,昨天)

     iOS-OC根据时间戳获取距离现在的状态(刚刚,分钟前,今天,昨天) 获取时间戳 - (NSString *)distanceTimeWithBeforeTime:(double)beTime { ...

  7. SPIE Example References

    Journal Article[1] Davis, A. R., Bush, C., Harvey, J. C. and Foley, M. F., "Fresnel lenses in r ...

  8. OpenCV 3.0 VS2010 Configuration

    Add in the system Path: C:\opencv\build\x86\vc10\bin; Project->Project Property->Configuration ...

  9. 移动web app开发小贴士 收藏有用

    1 创建主屏幕图标 (Creating a home screen icon ,for ios)   1 2 3 4 5 6 //57*57 <link rel="apple-touc ...

  10. Css3 - 全面学习

    css3实验.生成.学习网站 http://www.css3maker.com/ http://www.css3.me/ 查询前缀和兼容性 http://caniuse.com/ 1.文本阴影 < ...