Ubuntu 10.10 (Pentium 4 2.80GHz)でQtMobility 1.2.0およびQt 4.7.4を使用してビデオを再生しようとすると、ひどいパフォーマンスが見られます。
おもしろいのは、トーテム(バックエンドとしてgstreamerも使用) とvlcが、このマシンで問題なくこれらのビデオを再生できることです (フルスクリーンなど)。
topによると、私のアプリケーションは CPU を100%消費しますが、totem と vlc は~ 40%しか消費しません。それは変だ!そのため、以下にアプリケーションのソース コードを共有します。仕事をするためにQMediaPlayer
andを使用します。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は、テストに使用しているビデオ ファイルの 1 つに関する次の情報を表示します。
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