【发布时间】:2011-10-13 19:54:32
【问题描述】:
我在 Ubuntu 10.10(奔腾 4)上尝试使用 QtMobility 1.2.0 和 Qt 4.7.4 播放视频时发现性能很差2.80GHz)。
有趣的是 totem(也使用 gstreamer 作为后端)和 vlc 能够毫无问题地播放这些视频机器,即使分辨率更高(全屏等)。
根据top,我的应用程序消耗了100%的CPU,而totem和vlc只消耗了~40%。这很奇怪!所以我在下面分享应用程序的源代码。它使用QMediaPlayer 和QVideoWidget 来完成这项工作。
movie.cpp:
#include <QtGui/QMainWindow>
#include <QtGui>
#include <qmediaplayer.h>
#include <qvideowidget.h>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QMainWindow mainWindow;
mainWindow.resize(QSize(1280, 500));
QMediaPlayer* mplayer = new QMediaPlayer;
QVideoWidget* vid_widget = new QVideoWidget(&mainWindow);
vid_widget->setAspectRatioMode(Qt::IgnoreAspectRatio);
mainWindow.setCentralWidget(vid_widget);
mplayer->setVideoOutput(vid_widget);
mplayer->setMedia(QUrl::fromLocalFile(argv[1]));
mplayer->setVolume(50);
mplayer->setPlaybackRate(1);
mplayer->play();
mainWindow.show();
return app.exec();
}
movie.pro:
TEMPLATE = app
QT += gui
CONFIG += mobility
MOBILITY = multimedia
QMAKE_RPATHDIR += $$DESTDIR
SOURCES = \
movie.cpp
即使我创建一个较小的窗口,性能仍然很糟糕,例如:
mainWindow.resize(QSize(960, 540));
有谁知道导致这种行为的原因以及如何解决?
如果有人感兴趣,ffmpeg 会显示有关我用于测试的视频文件之一的以下信息:
Input #0, matroska, from '/home/user/movie.mkv':
Duration: 00:02:23.22, start: 0.000000, bitrate: N/A
Stream #0.0(eng): Video: h264, yuvj420p, 1280x536 [PAR 1:1 DAR 160:67], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16
【问题讨论】:
-
如果有源代码,建议准备长时间调试弱化搜索繁忙循环
-
@Ulterior 没有什么可调试的。看起来像是在 qt 库中搞砸了。不会是第一个
标签: c++ performance qt video qt-mobility