Qt phonon多媒体框架 基于播放器
- 博客分类:
- 技术杂绘
Qt phonon多媒体框架 基于播放器
2011年12月29日
详解 Qt phonon多媒体框架 基于播放器
本文标签:Qt phonon 多媒体 框架
Qt phonon多媒体框架是本文要介绍的内容,先来了解一下Phonon是什么?Qt从4.4版本开始提供的一套多媒体框架,提供多媒体回放的功能 。目前在Qt 4.6中实现多媒体播放图形界面主要依赖于phonon框架,其实qt中还有一个Multimedia模块,帮助文档中对它的描述是:实现底层的多媒体播放功能,在一般情况下上层的接口phonon模块更适合实现这些功能 。
phonon最初是 一个 源于KDE的项目,为使用音频和视频的应用程序开发提供的一个框架 。应用程序不用去管多媒体播放是通过什么实现的(如gstreamer、xine),只需调用相应的接口就行,但这中间需要一个中转,被称为backend 。Qt也是通过phonon来实现夸平台的多媒体播放 。
多媒体文件的播放主要过程包括:文件读取、分流、解码、输出 。
这些在不同的系统中实现方式不同,如windows下的DirectX、Linux下的 gstreamer或xine及Mac下的QuickTime 。 而Qt中的phonon作为夸平台的多媒体解决方案,就因该为用户屏蔽掉这些差异 。而实际上它做得还不够好,因为用户还需要自己来安装相应的后端插件来完成播放任务 。
看完上图,你可以知道,应用Phonon框架实质上分4个部分,你的程序,Phonon库,Phonon后端插件(phonon_backend),真正的后端 。 Phonon其实什么都不干,他只是提供了一套API接口,这套接口可以给你的程序调用,同时也是给编写后端插件提供一个规范 。程序完全不知道最后谁来放我的Mp3,谁来解码我的视频,播放的又是哪个设备 。
同样,Phonon库也不知道,他只管搜索符合自己规范的插件 。并告诉这些插件,现在程序发出的指令是什么,从插件返回给程序现在的媒体状态和信息 。而后端才是实际进行读入媒体、解码并且播放的部分,他们和后端插件是一一对应的 。后端可以是任何形式,只要你写出了相应的后端插件 。所以,你要使用Phonon必需要先做3件事:
(1) 编译你的Phonon库:通常情况下,Qt默认没有编译,你只需要configure后加好参数,然后单独进入phonon的文件夹进行编译就可以了
(2) 编译你的Phonon后端插件:Qt为3大平台分别提供了一个可用的后端插件,放在src\plugins\phonon目录下 。进入目录编译即可,Qt会自动选择你当前系统的后端插件的 。(出现phonon backend plugin could not be loaded就是这步没有做)
如果你是MinGW用户,那抱歉了,Windows下Qt只提供了DirectShow这个后端插件,而这个后端插件因为调用了DX的SDK,所以只能由VC编译 。当然你其实有更好的选择,比如这个phonon-vlc-mplayer插件,通过他,你可以将mplayer作为你的后端,彻底抛弃臃肿的VS以及读ID3v2都会出错的DirectShow(其实也不能怪DirectShow,DirectShow同样只是个框架,解码还靠系统里安的解码器、滤镜们,我用的播放器都太绿色了,于是DirectShow就很弱)
(3) 你要保证你的后端正常运作:对于Qt提供默认提供插件的后端来说,基本不成问题 。但要是你想做嵌入式播放器?恩,很大的问题 。据做过GStreamer移植的人反映,这事恼火的很 。想做Qt嵌入式播放器的还是老老实实的QProcess+Mplayer slave模式吧!(新的Qt4.5说是提供了CE上的DirectShow后端插件,有兴趣的可以去试试看)
以上3点做完,你就可以拿demo里那个mediaplayer去测试了,测试成功的话,你就可以非常容易的用Qt实现你自己的媒体回放了 。想要更高级的操作,比如编码、混音、储存媒体文件?呵呵,等Phonon慢慢更新吧,现在来说,Phonon还只是个什么都不能干的传声筒 。
如上所述,如果想要运行使用Qt中的phonon写的程序,需要满足一下条件:Qt基本库、Qt phonon库、phonon_backend(后端插件)和多媒体播放后台 。下面以linux(Fedora 12)系统、Qt 4.6、mplayer为例,假设Qt基本库已经安装好,默认phonon是没有被安装的,介绍phonon和后端插件的安装 。
1. Phonon库安装 :
进入源代码的phonon目录,如"/usr/src/qt-everywhere-opensource-src-4.6.0/src/phonon",实 际代码并不在里面,从phonon.pro文件可知源代码在“/src/3rdparty/phonon/phonon”,但并不影响编译 。在终端输入 “make;make install”即可,如果安装时出错,也可手动将lib、include下相关文件拷贝到安装目录 。
2. 后端插件安装 :
(1)下载phonon-mplayer 。
地址: http://websvn.kde.org/trunk/playground/multimedia/phonon-backends/mplayer/
使用svn下载: svn co svn://anonsvn.kde.org/home/kde/trunk/playground/multimedia/phonon-backends/mplayer
(2)返回phonon-mplayer目录,编译(qmake;make)生成phonon_backend/libphonon_mplayer.so动态链接库 。
(3)将libphonon_mplayer.so拷贝到$QTDIR/plugins/phonon_backend/
说明:帮助文档中介绍Linux下Qt默认只支持gstreamer,其它的不做保证 。但实际中由于mplayer安装比较方便,支持的文件格式全,使用的人也非常多,所以以mplayer为例 。而gstreamer的后端插件可以在系统的“/usr/lib64/kde4/plugins /phonon_backend”目录直接找到(如果已经从源上安装了的话) 。
3. 测试
examples/phonon/qmusicplayer下的例子用mplayer做后端播放音乐会有问题,这里选择使用demos/qmediaplayer 。
当然也可以用一个简单的例子,如下:
#include #include #include #include int main(int argv, char **args) { QApplication app(argv, args); Phonon::MediaObject *music = Phonon::createPlayer(Phonon::MusicCategory, Phonon::MediaSource("/home/dlw/Music/mxshf.mp3")); music->play(); /* 视频播放 Phonon::MediaObject *music = Phonon::createPlayer(Phonon::VideoCategory, Phonon::MediaSource("/media/DLW/movie/One.Night.in.Supermarket.avi")); music->play(); */ return app.exec(); }
小结:详解 Qt phonon多媒体框架 基于播放器的内容介绍完了,希望本文对你有所帮助!
发表评论
-
Android模拟器上网问题
2012-01-20 02:05 585Android模拟器上网问题 2011年04月15日 I ... -
ERROR: the user data image is used by another emulator. aborting
2012-01-20 02:05 485ERROR: the user data image is u ... -
Eclipse插件之Java代码分析工具: FindBugs
2012-01-20 02:05 591Eclipse插件之Java代码分析工具: FindBugs ... -
模拟器里卸载应用程序的方法
2012-01-20 02:05 754模拟器里卸载应用程序的方法 2011年06月21日 我们 ... -
MFC架构之CWinThread类
2012-01-20 02:05 636MFC架构之CWinThread类 2010 ... -
XP优化大全(1)
2012-01-19 09:55 572XP优化大全(1) 2010年07月20日 1.减少 ... -
电脑技术
2012-01-19 09:55 582电脑技术 2011年04月20日 1、加快XP开机及 ... -
诺基亚5530使用技巧整理
2012-01-19 09:55 466诺基亚5530使用技巧整理 2010年11月28日 ◆快 ... -
Android程序结构解析
2012-01-19 09:55 691Android程序结构解析 2010 ... -
我几时先可以真正征服你啊 钻石Touch Diamond
2012-01-19 09:55 600我几时先可以真正征服你啊 钻石Touch Diamond 2 ... -
写给那些想买手机,准备换手机的朋友,教你购买合适的手机
2012-01-17 02:26 566写给那些想买手机,准备 ... -
调用规范与可变参数表
2012-01-17 02:26 544调用规范与可变参数表 ... -
使用命令行管理IIS(6.0)
2012-01-17 02:26 491使用命令行管理IIS(6.0) 2011年12月06日 ... -
TI AM335x 应用处理器:无限可能
2012-01-17 02:26 1337TI AM335x 应用处理器:无 ... -
大家帮看看这个电脑多少钱 2手的 卖家1500 1年拉 2011-12-24
2012-01-15 22:05 569大家帮看看这个电脑多少钱 2手的 卖家1500 1年拉 ... -
电脑型号 索尼 VAIO VPCYA15EC 笔记本电脑
2012-01-15 22:05 680电脑型号 索尼 VAIO VPCYA15EC 笔记本电脑 2 ... -
HTTPS和HTTP的区别
2012-01-15 22:05 795HTTPS和HTTP的区别 2011年1 ... -
出售因特双核2.2gCPU,4G内存独显本子 - 2500元
2012-01-15 22:04 16出售因特双核2.2gCPU,4G内存独显本子 - 2500元 ... -
Nginx ngx_http_upstream_module[原]
2012-01-15 22:04 635Nginx ngx_http_upstream_module[ ...
相关推荐
主要介绍Qt Phonon多媒体框架的结构及其编程方法
Qt从4.4版本开始提供的一套多媒体框架,提供多媒体回放的功能。目前在Qt 4.6中实现多媒体播放图形界面主要依赖于phonon框架,其实qt中还有一个Multimedia模块,帮助文档中对它的描述是:实现底层的多媒体播放功能,...
本章对嵌入式Linux 平台下...最后,通过一款视频播放器的开发实例,综合地对Qt 多媒体开发框架的使用模式进行完整地介绍,加深读者对Qt 多媒体框架的认识,提高开发者对Qt 多媒体框架应用的灵活性。【作者保留所有权】
Ubuntu下QT4.6.3 使用Phonon多媒体框架开发,放出源代码仅供初学者学习
第三部分使用Phonon编写了一个多媒体播放器,展示了主要技术理念的应用方法;附录部分给出了C++保留关键字、Debian和Qt程序开发环境的配置等内容。每节的练习题和各章后面的复习题,既可作为课堂上的讨论题,也可...
书是美国萨福克大学已使用十余年的经典教程,利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想。全书共分四个部分:第一...第三部分使用Phonon编写了一个多媒体播放器,展示了主要技术理念的应用方法;
这一节实现一个简易的音乐播放器,其音乐播放的核心功能是采用Qt支持的Phonon框架,该框架在前一篇博文Qt学习之路_13(简易俄罗斯方块) 中已经使用过了,在俄罗斯方块中主要是用来设置背景音乐和消行的声音的。...
2.2 phonon多媒体框架 第3章 模型/视图表格模型 3.1 qt的模型/视图架构 3.2 用于表格的qstandarditemmodel 3.3 创建自定义表格模型 第4章 模型/视图树模型 4.1 用于树qstandarditemmodel的用法 4.2 创建自定义树模型...
这是有关如何创建视频播放器的教程。 本教程伪装为使用Python编程语言和Qt框架(都是多平台)的图形用户界面(GUI)编程... -使用Phonon多媒体框架。 -使用列表小部件。 -使用样式表。 (进行中)-国际化。 (进行中)
第三部分使用Phonon编写了一个多媒体播放器,展示了主要技术理念的应用方法;附录部分给出了C++保留关键字、Debian和Qt程序开发环境的配置等内容。每节的练习题和各章后面的复习题,既可作为课堂上的讨论题,也可...
第三部分使用Phonon编写了一个多媒体播放器,展示了主要技术理念的应用方法;附录部分给出了C++保留关键字、Debian和Qt程序开发环境的配置等内容。每节的练习题和各章后面的复习题,既可作为课堂上的讨论题,也可...
2.2 Phonon多媒体框架第3章 模型/视图表格模型 3.1 Qt的模型/视图架构 3.2 用于表格的QStandardItemModel 3.3 创建自定义表格模型 第4章 模型/视图树模型 4.1 用于树QStandardItemModel的用法 4.2 创建自定义树模型 ...
第三部分使用Phonon编写了一个多媒体播放器,展示了主要技术理念的应用方法;附录部分给出了C++保留关键字、Debian和Qt程序开发环境的配置等内容。每节的练习题和各章后面的复习题,既可作为课堂上的讨论题,也可...
第三部分使用Phonon编写了一 个多媒体播放器,展示了主要技术理念的应用方法;附录部分给出了C++保 留关键字、Debian和Qt程序开发环境的配置等内容。每节的练习题和各章后 面的复习题,既可作为课堂上的讨论题,也可...
设计以QT基础类库为前端界面,套用Phonon多媒体框架,使用GStreamer解码器,从而实现多媒体资源的加载、播放、字幕视频显示、基本播放控制等功能。测试证明,该播放器界面友好,运行稳定,能够实现媒体文件的有效...