veo un desempeño terrible al intentar reproducir vídeos con QtMobility 1.2.0 y Qt 4.7.4 en Ubuntu 10.10 (Pentium 4 2.80GHz).rendimiento Terrible con QMediaPlayer y QVideoWidget
Lo curioso es que tótem (que también utilizan gstreamer como back-end) y VLC son capaces de reproducir estos vídeos sin un problema en esta máquina, incluso con resoluciones más altas (pantalla completa, etc).
Según superior, mi solicitud consume 100% de la CPU mientras tótem y VLC consume sólo ~ 40%. ¡Eso es raro! Así que estoy compartiendo el código fuente de la aplicación a continuación. Utiliza QMediaPlayer
y QVideoWidget
para hacer el trabajo.
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
El rendimiento sigue siendo terrible, incluso si se crea una ventana más pequeña, como por ejemplo:
mainWindow.resize(QSize(960, 540));
¿Alguien k ahora ¿qué podría estar causando este comportamiento y cómo lo soluciono?
Si alguien está interesado, ffmpeg muestra esta información sobre uno de los archivos de vídeo que estoy usando para la prueba:
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
Si el código fuente está disponible, sugiero prepararme para un depurador largo que busque bucles ocupados – Ulterior
@Ulterior No hay nada que depurar. Parece un error en la biblioteca de qt. No sería el primero –