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 <QtGui>
#include <Phonon/MediaObject>
#include <Phonon/VideoPlayer>
#include <Phonon/BackendCapabilities>
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(); 
}

转载于:https://www.cnblogs.com/yc_sunniwell/archive/2010/07/01/1769163.html

Qt phonon多媒体框架相关推荐

  1. Qt phonon多媒体框架(转)

    Phonon是什么?Qt从4.4版本开始提供的一套多媒体框架,提供多媒体回放的功能.目前在Qt 4.6中实现多媒体播放图形界面主要依赖于phonon框架,其实qt中还有一个Multimedia模块,帮 ...

  2. Phonon Multimedia framework(Phonon多媒体框架)

    闲的蛋疼,最近要用到Phonon,了解不多,就翻译一下官方文档吧,Mark一下.顺便练下表达能力,要考六级了,就当复习吧. 文档的地址在:Phonon multimedia framework 简介 ...

  3. Qt4 Phonon多媒体框架详解及简单实例

    Qt 使用 Phonon 这个多媒体框架来提供播放常见多媒体格式文件的功能,其中媒体文件可以是本地文件或者通过 QURL 指向的网络流文件. 整体来说,Phonon的架构只需要记住以下的三东西: me ...

  4. 基于Qt Phonon模块实现音乐播放器

    这次使用Qt实现的是一个本地音乐播放器,可以播放下载在计算机本地的音乐,提供了添加歌曲,歌曲列表,清空列表的功能.默认歌曲列表循环播放.音乐播放的实现主要依赖的是Qt 的多媒体框架phonon.该音乐 ...

  5. Qt Phonon介绍及安装

      Qt Phonon介绍及安装 目前在Qt 4.6中实现多媒体播放图形界面主要依赖于phonon框架,其实qt中还有一个Multimedia模块,帮助文档中对它的描述是:实现底层的多媒体播放功能,在 ...

  6. Qt Phonon详解

    Qt Phonon详解(转帖) 前言 Phonon严格来说其实非为Qt的library,Phonon原本就是KDE 4的开放原始码多媒体API,後来与Qt合并与开发,所以简单来说就是Qt使用Phono ...

  7. android多媒体框架学习 详解

    原址 一:多媒体框架概述 jellybean 的多媒体跟以前的版本,通过对比没啥变化,最大的变化是google终于舍得给multimedia建个独立的git了(framework/av),等你好久了! ...

  8. android多媒体框架学习 详解 最新版本

    一:多媒体框架概述 jellybean 的多媒体跟以前的版本,通过对比没啥变化,最大的变化是google终于舍得给multimedia建个独立的git了(framework/av),等你好久了!也体现 ...

  9. GStreamer跨平台多媒体框架

    GStreamer跨平台多媒体框架 Gstreamer基本概念 GStreamer是用于构造媒体处理组件图的库.它支持的应用程序范围从简单的Ogg / Vorbis回放,音频/视频流到复杂的音频(混合 ...

最新文章

  1. 不同Logger的使用
  2. shell script
  3. java实现异步调用实例
  4. rdkafka线程过多_Kafka/RocketMQ 多线程消费时如何保证消费顺序?
  5. python 矩阵除法_Python线性代数学习笔记——矩阵的基本运算和基本性质,实现矩阵的基本运算...
  6. ctb伺服驱动器说明书_安川伺服驱动器SGDV报警原因及处理措施
  7. HTML5 代码要怎样凭“魅力”吸引搜索引擎的注意?
  8. JavaScript Math.random()随机数函数
  9. SSL-Explorer 安装配置
  10. 使用Redis进行搜索
  11. nulls first和nulls last
  12. 实验二 任务二 体重测量
  13. 做国外广告联盟赚美刀的5大类项目
  14. SpringBoot与RocketMQ客户端集成原理解读与示例
  15. 苹果开发者账号注册错误:关联的Apple ID国家/地区并不匹配
  16. 如何在Adobe Illustrator中绘制可爱的蓝色驯鹿
  17. float 与 double 的区别
  18. 搭建JAVA电商平台——后端
  19. easyui Grid 的列合计
  20. ai推理_人工智能推理

热门文章

  1. 如何安装WinCE6.0
  2. DS||dfs and bfs
  3. 【最实用的chrome插件】CSDN 浏览器插件:CSDN 开发者助手(测评手册2)
  4. 【科普贴】UART接口通讯协议
  5. obs多推流地址_还在为拿不到推流地址而烦恼吗?三分钟让你用上OBS进行高清直播...
  6. 关闭笔记本计算机盖无法睡眠,Win10笔记本怎么设置在关闭盖子时不自动休眠不关屏幕?...
  7. VCU整车控制器BMS hil测试simulink模型VCU整车控制器BMS hil测试simulink模型带模型说明文件
  8. yara规则分享:decaf勒索病毒
  9. 专访《硅谷百年史》作者:AI、基因编辑如何在未来10年重塑人类生命形态?
  10. VMware Workstation 安装苹果虚拟机