繁体   English   中英

QMediaPlayer和QVideoWidget表现糟糕

[英]Terrible performance with QMediaPlayer and QVideoWidget

Ubuntu 10.10 (Pentium 4 2.80GHz)上尝试使用QtMobility 1.2.0Qt 4.7.4播放视频时,我看到了糟糕的表现。

有趣的是图腾 (也使用gstreamer作为后端)和vlc能够在这台机器上播放这些视频,即使分辨率更高(全屏等)。

根据顶部 ,我的应用程序消耗100%的CPU,而图腾和vlc仅消耗约40% 这很奇怪! 所以我在下面分享了应用程序的源代码。 它使用QMediaPlayerQVideoWidget来完成这项工作。

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

我开始使用QML视频元素 ,在遇到几个渲染/性能问题之后,我终于放弃并写了一个视频播放器元素来替换QtMobility中的那个。

对于任何可能感兴趣的人, GStreamer都有一个非常容易使用的C ++界面

您的代码没有任何问题,您只是将球传递给Qt以解码和播放电影。

您要么使用未启用硬件加速的Qt版本,要么系统没有适当的Qt硬件来加速解码和回放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM