在使用QtMobility 1.2.0和Qt 4.7.4在Ubuntu10.10(奔腾4 2.80GHz)播放视频时,我看到了糟糕的表现。
有趣的是,图腾(它也使用gstreamer作为后端)和vlc能够在这台机器上播放这些视频,即使分辨率更高(全屏等)。
根据top,我的应用程序消耗100%的CPU,而图腾和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发布于 2011-10-22 16:59:52
您的代码没有什么问题,您只是将球传递给Qt,以便对电影进行解码和播放。
您使用的是未启用硬件加速的Qt构建,或者您的系统没有适合Qt加速解码和回放的硬件。
发布于 2011-12-13 12:43:20
我开始使用QML视频元素,在出现了几个呈现/性能问题之后,我最终放弃了,编写了一个视频播放器元素来替换来自QtMobility的元素。
对于可能感兴趣的人来说,GStreamer有一个C++接口非常容易使用。
https://stackoverflow.com/questions/7759695
复制相似问题