gpt4 book ai didi

c++ - QMediaPlayer 和 QVideoWidget 的糟糕表现

转载 作者:IT老高 更新时间:2023-10-28 23:01:36 25 4
gpt4 key购买 nike

我在 Ubuntu 10.10(奔腾 4)上尝试使用 QtMobility 1.2.0Qt 4.7.4 播放视频时发现性能很差2.80GHz)。

有趣的是 totem(也使用 gstreamer 作为后端)和 vlc 能够毫无问题地播放这些视频机器,即使分辨率更高(全屏等)。

根据top,我的应用程序消耗了100%的CPU,而totem和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 Video Element在遇到几个渲染/性能问题后,我终于放弃并编写了一个视频播放器元素来替换 QtMobility 中的那个。

致任何可能感兴趣的人,GStreamer has a C++ interface这很容易使用。

关于c++ - QMediaPlayer 和 QVideoWidget 的糟糕表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7759695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com