在Meego上使用QML 播放视频
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot update of Template:ArticleMetaData) |
hamishwillee
(Talk | contribs) m (Text replace - "Category:MeeGo" to "Category:MeeGo Harmattan") |
||
| Line 23: | Line 23: | ||
}} | }} | ||
| − | [[Category:MeeGo]][[Category:Qt Mobility]][[Category:Qt Quick]] | + | [[Category:MeeGo Harmattan]][[Category:Qt Mobility]][[Category:Qt Quick]] |
== 综述 == | == 综述 == | ||
由于目前的最新的 Qt Creator 暂时还不太完善, 因此在 Meego 上开发和视频相关应用的时候,如果我们使用到了Qt Mobility Multimedia API 中的 QML Video elements, 那么我们就需要注意以下事项: | 由于目前的最新的 Qt Creator 暂时还不太完善, 因此在 Meego 上开发和视频相关应用的时候,如果我们使用到了Qt Mobility Multimedia API 中的 QML Video elements, 那么我们就需要注意以下事项: | ||
Latest revision as of 13:52, 13 June 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!
例子程序请参考附件。

