StupidBeauty
Read times:1366Posted at:Wed Jul 20 04:21:50 2011
- no title specified

Qt4.7.0文档翻译:MediaObject类参考,MediaObject Class Reference

详细描述

MediaObject提供用于播放多媒体文件的接口。

媒体对象管理着一个 MediaSource ,而它向媒体对象提供多媒体内容,例如来自文件的内容。Phonon 中的播放功能总是通过调用 play() 函数来启动的

播放状态 (播放、暂停、停止、跳转)是由媒体对象控制的,而你可以查询当前的状态( state() )。它会跟踪媒体流中的播放位置 ,并且会在流中的当前位置发生改变时发射 tick() 信号。

注意,这个类的大部分函数是异步的 ,所以在调用一个函数之后,除非你接收到咯 stateChanged() 信号 ,否则不能确定已进入咯某一状态。枚举量 State 的描述对不同的状态进行咯说明。

在调用 play ()之前,媒体对象应当连接到 输出节点 (output nodes) ,而它们将媒体输出到下层的硬件中 。所需要的输出节点取决于正在播放的多媒体文件的内容。当前, Phonon有两个输出节点: AudioOutput 用于声音内容, VideoWidget 用于视频内容。如果某个 MediaSource 同时包含声音和视频的话 ,那么需要将两种节点都连接到媒体对象。

Phonon::MediaObject *mediaObject = new Phonon::MediaObject(this);

Phonon::VideoWidget *videoWidget = new Phonon::VideoWidget(this);

Phonon::createPath(mediaObject, videoWidget);

Phonon::AudioOutput *audioOutput =

new Phonon::AudioOutput(Phonon::VideoCategory, this);

Phonon::createPath(mediaObject, audioOutput);

mediaObject->play();

媒体对象可以将文件来源(sources)排队以便播放。当它播放完咯一个文件之后,会开始播放队列中的另一个 ;新的文件来源会从队列里删除。队列可能在任何时候发生改变。

media->setCurrentSource(":/sounds/startsound.ogg");

media->enqueue("/home/username/music/song.mp3");

media->enqueue(":/sounds/endsound.ogg");

你还可以利用 aboutToFinish() 信号,它会在队列发生改变时被发射

media->setCurrentSource(":/sounds/startsound.ogg");

connect(media, SIGNAL(aboutToFinish()), SLOT(enqueueNextSource()));

}

void enqueueNextSource()

{

media->enqueue("/home/username/music/song.mp3");

}

当播放即将结束,也 就是说,某个媒体源文件已经播放到达末尾,并且队列为空的情况下 ,会发射好几个信号。首先 ,在播放快要结束时,媒体对象会发射 aboutToFinish (),接下来是 finished ()。另外还会发 stateChanged ()信号,并且其状态是 PausedState ,这是在播放完毕之后媒体对象所处的状态。如果你想要进入另一个状态的话 ,那么你可以将一个信号槽连接到 finished ()信号上 ,并且在那个信号槽中设置一个新的状态。

媒体对象会分析元信息 ,例如标题、艺术家和专辑。元数据不会在新的源文件被提供之后立即就分析,但是会在对象离开 LoadingState 状态之前分析。数据可使用字符串键 (应当按照Ogg Vorbis 规范 http://xiph.org/vorbis/doc/v-comment.html 来使用)或 MetaData 枚举来查询。可用的数据取决于具体的媒体文件的类型和内容。 当媒体对象分析出咯新的元数据时 ,会发射 metaDataChanged ()信号。

如果在播放和载入媒体文件的时候发生错误,那么会通过发射状态改变信号的方式来报告,其状态是 ErrorState 。错误的严重程序可使用 ErrorType 来查询。如果是 NormalError 的话 ,那么还可能继续播放 。比如说,一个媒体源文件中还有视频内容,而只有声音内容播放失败。如果是 FatalError 的话 ,表示Phonon 无法继续播放当前源文件,但是可以尝试播放其它的文件。 errorString ()给出咯一个可由用户读懂的错误信息。

参见 Symbian平台安全要求 Phonon::MediaSource Phonon::AudioOutput VideoWidget 音乐播放器示例 Phonon概述 Phonon::VideoPlayer Phonon::createPlayer ()和 Phonon模块

类型文档

enum Phonon::State

状态 (state)枚举量描述咯一个媒体对象能够进入的不同状态。 MediaObject 的好多函数都是异步的 ,所以 ,即使你通过函数调用 (例如,通过 play() )来请求改变状态 ,也不能在接收到 stateChanged() 信号之前就确认这个改变已经生效

无论它以前是什么状态,一个媒体对象可能在任何时候变化到任何状态。

常量

描述

Phonon::LoadingState

0

在构建之后,可能需要等一下,这个媒体对象才能准备好播放( play() )。这个状态通常表示那些后端在初始化媒体图像以及载入源文件 。当这个对象离开载入状态时 ,它会进入StoppedState 状态,除非发生咯错误或者是通过一个函数调用 (例如, MediaObject::play() )请求咯进入另一个状态。

Phonon::StoppedState

1

在停止状态中,媒体对象已经准备好可以播放它的当前媒体源文件咯 。在这个时候 ,媒体流中的当前位置( position )是0。

Phonon::PlayingState

2

媒体对象正在播放它的媒体源文件。

Phonon::BufferingState

3

播放器正在等待数据,以便开始或继续播放。这个状态通常在等待网络连接中的数据时使用。

Phonon::PausedState

4

媒体播放器此时暂停咯播放动作,也就是说,它停止播放但是保留了在流中的当前播放位置。

Phonon::ErrorState

5

当一个媒体对象进入错误状态时,就表示在播放过程中发生咯一个错误。可能发生的错误已经按照 Phonon::ErrorType 分成咯两类 ,而当前错误的类型可通过 errorType() 来查询。 FatalError 类型的错误表示当前的播放无法继续,但是你还是可以尝试播放一个新的媒体源文件。 NormalError 类型的错误表示当前的播放仍然可能继续 ,并且媒体对象可能因此从ErrorState状态变化到其它状态。

这个枚举是在Qt 4.4中引入的

参见 MediaObject

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands