分类: 嵌入式
2011-09-02 14:16:30
嵌入式图形界面开发—Phonon
多媒体文件的播放主要过程包括:文件读取、分流、解码、输出
Qt从4.4版本开始提供的一套多媒体框架,提供多媒体回放的功能。目前在Qt 4.6中实现多媒体播放图形界面主要依赖于phonon框架,其实qt中还有一个Multimedia模块,帮助文档中对它的描述是:实现底层的多媒体播放功能,在一般情况下上层的接口phonon模块更适合实现这些功能。phonon最初是一个 源于KDE的项目,为使用音频和视频的应用程序开发提供的一个框架。应用程序不用去管多媒体播放是通过什么实现的(如gstreamer、xine),只需调用相应的接口就行,但这中间需要一个中转,被称为backend。Qt也是通过phonon来实现夸平台的多媒体播放。
Phonon架构
MediaObject: phonon的基础,用于管理多媒体来源,来源可以是影音文件,并能提供基本的播放控制,如开始、暂停、结束等。提供多媒体资料给MediaObject的是MediaSource
Sink:输出多媒体,Sink接受MediaOjbect来的资料,MediaObject控制播放,Sink处理来的多媒体
Paths:用来连接Phonon的物件,即MediaObject与Sink将的连接
简单的视频播放
Phonon提供了很多类供使用,其中最简单的,莫过于VideoPlayer这个类了。
VideoPlayer widget如它的名字一样,就是用来播放video,而且使用起来相当简易,而且功能也不会缺少,包括播放、暂停与停止。
在实例化VideoPlayer对象时,可以在constructor就载入多媒体种类与要放在哪个widget中(即为 parentWidget),而media source可以利用函数load()来载入或是在play()时载入,而载入方式可直接从文件或是从网络地址载入。
VideoPlayer大部分函数都是非同步的,所以载入media source并不会马上播放多媒体文件,只有在调用函数play( )之后才会开始播放。
示例代码:(播放视频)
QWidget *widget = new QWidget;
widget->setWindowTitle("Video Player");
widget->resize(600,500);
Phonon::VideoPlayer *player = new Phonon::VideoPlayer(Phonon::VideoCategory,widget);
player->play(Phonon::MediaSource("I:/clock.avi"));
// player->load(Phonon::MediaSource("I:/clock.avi"));
// player->play();
widget->show();
播放音乐:
Phonon::VideoPlayer *player = new Phonon::VideoPlayer(Phonon::MusicCategory, widget);
player->load(Phonon::MediaSource("../2.mp3"));