关键词不能为空

当前您在: 主页 > 英语 >

如何使用QT播放视频

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-17 11:23
tags:

-

2021年2月17日发(作者:麦德林)


西祠胡同社区



-


城市生活社区门户




如何使用



Qt Phonon



09-11-28 12:55


发表于:


《南京嵌入式开发圈》



分类:未分类



前言



Phonon


严格来说其实非为


Qt



li brary



Phonon


原本就是< /p>


KDE


4


的开放


原始码多媒体


API


,後来与


Qt< /p>


合并与开发,所以简单来说就是


Qt


使用


Phonon


这个多媒体框架来提供一般影音多媒体档案的播放 ,而这些影音


多媒体来源可以是档案、网路串流或是指到一个档案的

QUrl




Phonon


是一个跨平台多媒体框架,


能够在


Qt


应用程式中使用与播放影音


多媒体内容。



[


编辑


] Phonon


的架构



整体来说,< /p>


Phonon


的架构只需要记住以下的三东西:

< br>


?



media object



Phonon


的基础, 用於管理多媒体来源。来源可能是影音档等,而能够提供基本的播


放控制,例如开始、暂 停或结束。而提供多媒体资料给


media


object


的则为


media


source


,在给


media object


之前通常是


raw data


,再由


media object


进行转换。



?



sinks



输出多媒体,例如在


widget


上播放影片或是输出至音效卡


(


播放音乐


)


。通常

< br>sink



一个播放的装置


(< /p>


例如音效卡等


)


。而

sink


只接受


media


object


来的资料,由


media


object


控制播放;而由


sink


来处理这些多媒体



?



paths



用来连接


Phonon


的物件,意即


media object



sink


之间的连接。




可从下图看出彼此的关系


(


资料来源:


Phonon Overview


)






所以整个播放影音的流程就是首先由


media object


开始播放,接著把媒


体串流经由


pat h


送至


sink


sink


会经由音效卡等装置重新播放


(play


back)


影音。



[


编辑


]


安装



QtSoftware


官方网站是说


Phonon


预设会跟在安装< /p>


Qt


时一并安装,不过


我不论是从


Qt SDK


或从


source code< /p>


重新


build


,都没有包含

< p>
Phonon



组,目前我是用另外一种方式来安 装


Phonon


,就是使用套件管理工具来

从套件包来安装,只需要安装下列的套件:



sudo apt-get install libphonon-dev libphonon4


phononbackend-gstreamer


安装完毕 之後,就可以使用


Phono


模组罗。




而与其他


Qt


应用程式一样,若有使用到


Phonon


函式库的应用程式在


build


的时候都需要额外设定使用


Phonon


模组,


必须要在


qmae k


project


file


中加入:



QT += phonon


[


编辑


]


使用



在此部分将会开始介绍如何使 用


Phonon


这套函式库,并且会列出一些小


范例来


demo


,首先就先来介绍几个简单好用的类别 。



[


编辑


] VideoPlayer Class


Phonon


有提供 很多类别可供使用,其中最简单的,莫过於


VideoPlayer

这个类别了。



VideoPlayer


widget


如它的名字一样,就是用来播放


vide o


,而且使用起


来相当简易,而且功能也不会缺少,包括播放、 暂停与停止。



而一开始早先提到的


M ediaObject


等类别与


VideoPlayer


在使用上有什么


差异呢?如果不需要更复杂的功能,例如建立一个


media


graph


,你只需


要能够播放影音档案的话,


其实使用


Video Player


类别即可达到你的要求。



而另外值得一提的就是,


VideoPlayer


大部分函式 都是非同步,所以载入


media


source


并不会马上播放多媒体档案,只有在呼叫函式


play(

< br>)


之後


才会播放。



要怎么使用这个类别呢?



其实相当简单,下面就是程式码片段:



VideoPlayer *player =


new


VideoPlayer(Phonon::


VideoCategory


,


parentWidget);


player->play(url);


在实体化

< p>
VideoPlayer


类别物件时,


可以在


constructor


就载入多媒体种


类 与要放在哪个


widget



(


即为


parentWidget)


,而


media source< /p>


可以


利用函式


load()


来载入或是在


play()


时载入,而载入方式可直 接从档案


或是从网路位址。




以下就是一个简单的影音播放功能小程式:



#include



#include



#include



#include




int


main(


int


argc,


char


*argv[]) {


QApplication app(argc, argv);



QWidget *widget =


new


QWidget;


widget->setWindowTitle(



);


widget->resize(


400


,


400


);



Phonon::


VideoPlayer


*player =


new



Phonon::


VideoPlayer


(Phonon::


VideoCategory


, widget);


player->load(Phonon::


MediaSource


(



));



player->play();



widget->show();



return


app.


exec


();


}


[


编辑


] MediaObject Class


MediaObject


类别主要提供一个能够 处理媒体播放的介面。



MediaObject


可说是处理多媒体档案最基本的一部份,


它接受并管理来自

< br>於


MediaSource


的媒体档案。而媒体播放、暂 停与停止都是由它来控制;


而在此之前,


media

< p>
物件必须要与


output


node

< p>
连接,如早先所讲的,这



nodes

< p>
主要将媒体输出至底层的硬体,


例如音效卡或显示卡等,

< br>而所需


要的


output node

则是根据多媒体的内容而所不同,目前


Phonon


有两种


output node




?



?



AudioOutput


-声音播放



VideoWidget


-影像播放



如果


MediaSource


包含声音 与影像的话,这两种


node


都必须要连接至

< br>media


物件。



就这个类别来说,有几个函式是你必须要知道的,分别是



?



setCurrentSourc e()


:设定


MediaObject


的多媒体来源,而来源可以是网路上


的影音档


(


利用


QUrl


来存取


)


或是本机档案


(


利用


QString)


,使用上相当简单:



QUrl url(



);


media->setCurrentSource(url);


?



?



?



play()


:开始播放多媒体资料



pause()


:暂停播放



stop()


:停止播放




以下为一个简单的程式片段,说明如何使用:



Phonon::


MediaObject



*mediaObject


=


new



Phonon::

< p>
MediaObject


(


this


);



Phonon::


VideoWidget



*videoWidget


=


new



Phonon::


VideoWidget


(

< br>this


);


Phonon::


createPath


(mediaObject, videoWidget);



Phonon::


AudioOut put


*audioOutput =

-


-


-


-


-


-


-


-



本文更新与2021-02-17 11:23,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/661769.html

如何使用QT播放视频的相关文章