如何使用 Qt Phonon 前言 Phonon严格来说其实非为Qt的library,Phonon原本就是KDE 4的开放原始码多媒体API,后来与Qt合并与开发,所以简单来说就是Qt使用Phonon这个多媒体框架来提供一般影音多媒体档案的播放,而这些影音多媒体来源可以是档案、网路串流或是指到一个档案的QUrl。 Phonon是一个跨平台多媒体框架,能够在Qt应用程式中使用与播放影音多媒体内容。 Phonon的架构 整体来说,Phonon的架构只需要记住以下的三东西: • media object Phonon的基础,用於管理多媒体来源。来源可能是影音档等,而能够提供基本的播放控制,例如开始、暂停或结束。而提供多媒体资料给media object的则为media source,在给media object之前通常是raw data,再由media object进行转换。 • sinks 输出多媒体,例如在widget上播放影片或是输出至音效卡(播放音乐)。通常sink是一个播放的装置(例如音效卡等)。而sink只接受media object来的资料,由media object控制播放;而由sink来处理这些多媒体 • paths 用来连接Phonon的物件,意即media object与sink之间的连接。 可从下图看出彼此的关系(资料来源:Phonon Overview): 所以整个播放影音的流程就是首先由media object开始播放,接著把媒体串流经由path送至sink,sink会经由音效卡等装置重新播放(play back)影音。 而与其他Qt应用程式一样,若有使用到Phonon函式库的应用程式在build的时候都需要额外设定使用Phonon模组,必须要在qmaek project file中加入: 以下就是一个简单的影音播放功能小程式: int main(int argc, char *argv[]) { QWidget *widget = new QWidget; |
|
|
|
|
widget->setWindowTitle("Video Player"); widget->resize(400,400); Phonon::VideoPlayer *player = new Phonon::VideoPlayer(Phonon::VideoCategory, widget); player->play(); widget->show(); return app.exec(); 以下为一个简单的程式片段,说明如何使用: Phonon::VideoWidget *videoWidget = new Phonon::VideoWidget(this); Phonon::AudioOutput *audioOutput = mediaObject->play(); |
|
|
|
videowidget->setAspectRatio(Phonon::VideoWidget::AspectRatioAuto); 当然也有提供函式让影片进入或退出全萤幕模式。以下为一个简短的程式码范例: moo->setCurrentSource( Phonon::SeekSlider *slider = new Phonon::SeekSlider; slider->show(); Phonon::VolumeSlider *volumeSlider = new Phonon::VolumeSlider; int main(int argc, char *argv[]) { QWidget *widget = new QWidget; Phonon::MediaObject *media = new Phonon::MediaObject; Phonon::VideoWidget *vwidget = new Phonon::VideoWidget(widget); QLabel *label = new QLabel("Volume: "); Phonon::SeekSlider *seekSlider = new Phonon::SeekSlider; QHBoxLayout *hLayout = new QHBoxLayout; QVBoxLayout *vLayout = new QVBoxLayout; widget->setLayout(vLayout); widget->show(); |