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. Oracle TNS配置浅析

    1. 什么是TNS? TNS是Oracle Net的一部分,专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,必须配置TNS,当然在少数情况下,不用配置T ...

  2. 贪心 Gym 100502E Opening Ceremony

    题目传送门 /* 题意:有一堆砖块,每一次操作可以选择消去任意一行,也可以选择消去任意一列.求要消去所有的砖块需要最小的操作数 贪心:首先清楚的是消去最高列的最佳,消去第一行最佳,行列的顺序只对中间过 ...

  3. 二叉索引树BIT

    定义     二叉索引树,binary index tree,又名树状数组,或Fenwick Tree,因为本算法由Fenwick创造.     对于数组A,定义Query(i,j) = Ai +Ai ...

  4. Play on Words[HDU1116]

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  5. Count the Trees[HDU1131]

    Count the Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  6. oracle 存储过程 基础

    差不多一年没写过存储过程,最近要写,发现基本忘了,google一番之后,觉得很有必要把基础的东西写下来备忘. 语句块定义: decalre -- 变量声明 var1 ); -- 仅声明 var2 ) ...

  7. iOS开发项目之四 [ 调整自定义tabbar的位置与加号按钮的位置]

    自定义tabbar与按钮的添加 01 - 把系统的tabbar用我们自己的覆盖 LHQTabBar *lhqTabBar = [[LHQTabBar alloc]init]; [self setVal ...

  8. IOS第七天(1:UiTableView 的基本用法)

    ***表格控件 #import "HMViewController.h" @interface HMViewController () <UITableViewDataSou ...

  9. 分布式架构高可用架构篇_05_fastdfs集群的安装

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  10. javaWeb应用部署结构浅析

    要成功部署一个Web应用,则必须遵循以下标准(参考)目录结构. 2.目录说明 1)WEB-INF目录:必须直接放在Web应用上下文之下(即一级目录). 2)class目录:必须直接放在WEB-INF目 ...