在Meego上使用QML 播放视频
文章信息
综述
由于目前的最新的 Qt Creator 暂时还不太完善, 因此在 Meego 上开发和视频相关应用的时候,如果我们使用到了Qt Mobility Multimedia API 中的 QML Video elements, 那么我们就需要注意以下事项:
首先,在开发视频相关项目的时候,由于目前的 Qt Creator 没有生成正确的 .aegis 文件,因此我们需要自己做一个.aegis 文件放到qtc_packaging\debian_harmattan目录里面。
aegis文件的大致格式如下:
<aegis>
<request>
<credential name="GRP::video" />
<credential name="GRP::pulse-access" />
<for path="/full/path/of/your/application" />
</request>
</aegis>
例如在本文所附例子程序中,videoplayer.aegis文件的具体内容如下:
<aegis>
<request>
<credential name="GRP::video" />
<credential name="GRP::pulse-access" />
<for path="/opt/VideoPlayer/bin/VideoPlayer" />
</request>
</aegis>
添加过aegis文件之后,我们就会发现程序可以播放视频了!
但是现在还存在一个问题,当我们打开视频之后,如果此时我们从侧面推一下程序,把程序切换到后台,我们会发现程序崩溃并自动退出了。 要解决这个问题,我们需要使用QGLWidget 作为一个 viewport。具体来讲,比如我们在main.cpp中可以这样写:
#include <QtGui/QApplication>
#include <QtOpenGL/QGLWidget>
#include <QtDeclarative>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
view.setViewport(new QGLWidget());
view.setSource(QUrl("qrc:/qml/main.qml"));
view.showFullScreen();
return app.exec();
}
对应的,我们需要在pro文件中加入如下代码:
QT += opengl在我们的例子程序中是在QmlApplicationViewer的构造函数中,加入
setViewport(new QGLWidget());
好了,到此为止,视频播放的程序在Meego上就一切正常了,Have Fun!
例子程序请参考附件。


Marcoweaver - 播放音频的aegis文件怎么写呢?
是不是: <aegis> <request> <credential name="GRP::audio" /> <credential name="GRP::pulse-access" /> <for path="/full/path/of/your/application" /> </request>
</aegis>marcoweaver 11:08, 10 August 2011 (EEST)