13

Ubuntu 10.10 (Pentium 4 2.80GHz)でQtMobility 1.2.0およびQt 4.7.4を使用してビデオを再生しようとすると、ひどいパフォーマンスが見られます。

おもしろいのは、トーテム(バックエンドとしてgstreamerも使用) とvlcが、このマシンで問題なくこれらのビデオを再生できることです (フルスクリーンなど)。

topによると、私のアプリケーションは CPU を100%消費しますが、totem と vlc は~ 40%しか消費しません。それは変だ!そのため、以下にアプリケーションのソース コードを共有します。仕事をするためにQMediaPlayerandを使用します。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
4

2 に答える 2

5

QML Video Elementの使用を開始しましたが、いくつかのレンダリング/パフォーマンスの問題が発生した後、最終的にあきらめて、QtMobility のものを置き換えるビデオ プレーヤー要素を作成しました。

興味のある人は誰でも、 GStreamer には非常に使いやすいC++ インターフェイスがあります。

于 2011-12-13T12:43:20.920 に答える
3

コードに問題はありません。ムービーのデコードと再生のためにボールを Qt に渡しているだけです。

ハードウェア アクセラレーションが有効になっていない Qt のビルドを使用しているか、システムに Qt のデコードと再生を高速化するための適切なハードウェアがありません。

于 2011-10-22T16:59:52.833 に答える