Chinaunix首页 | 论坛 | 博客
  • 博客访问: 631862
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 11:07:34

嵌入式图形界面开发—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"));

阅读(151) | 评论(0) | 转发(0) |
0

上一篇:简单媒体播放器

下一篇:如何学习Qt

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