Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7563371
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2011-09-02 14:16:30

嵌入式图形界面开发—Phonon

 

多媒体文件的播放主要过程包括:文件读取、分流、解码、输出

 

Qt4.4版本开始提供的一套多媒体框架,提供多媒体回放的功能。目前在Qt 4.6中实现多媒体播放图形界面主要依赖于phonon框架,其实qt中还有一个Multimedia模块,帮助文档中对它的描述是:实现底层的多媒体播放功能,在一般情况下上层的接口phonon模块更适合实现这些功能。phonon最初是一个 源于KDE的项目,为使用音频和视频的应用程序开发提供的一个框架。应用程序不用去管多媒体播放是通过什么实现的(如gstreamerxine),只需调用相应的接口就行,但这中间需要一个中转,被称为backendQt也是通过phonon来实现夸平台的多媒体播放。

 

Phonon架构

MediaObject: phonon的基础,用于管理多媒体来源,来源可以是影音文件,并能提供基本的播放控制,如开始、暂停、结束等。提供多媒体资料给MediaObject的是MediaSource

Sink输出多媒体,Sink接受MediaOjbect来的资料,MediaObject控制播放,Sink处理来的多媒体

Paths:用来连接Phonon的物件,即MediaObjectSink将的连接

 

简单的视频播放

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"));

阅读(3325) | 评论(0) | 转发(4) |
0

上一篇:如何学习Qt

下一篇:简单媒体播放器

给主人留下些什么吧!~~