×
Namespaces

Variants
Actions

在Meego上使用QML 播放视频

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

代码示例
文章
zhouhl 在 01 Jul 2011 创建
最后由 hamishwillee 在 13 Jun 2012 编辑

综述

由于目前的最新的 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!

例子程序请参考附件。

下载源码和样例程序

File:MeegoVideoPlayer.zip

相关链接

This page was last modified on 13 June 2012, at 13:52.
115 page views in the last 30 days.
×