0

同じビデオを5つのウィンドウで再生しようとしています。

     Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget)
    {
        ui->setupUi(this);
         media = new Phonon::MediaObject(this);
        media->setCurrentSource(Phonon::MediaSource("video.flv"));

        Phonon::VideoWidget* fvid=new Phonon::VideoWidget(this);
        Phonon::createPath(media,fvid);
        fvid->setGeometry(20,20,122,122);
        fvid->show();

        Phonon::VideoWidget* fvid2=new Phonon::VideoWidget(this);
        Phonon::createPath(media,fvid2);
        fvid2->setGeometry(220,220,122,122);
        fvid2->show();
    }

void Widget::on_pushButton_clicked()
{
    media->play();
}

このコードは1つのVideoWidgetで機能しますが、2つまたは5つでは機能しません。複数のMediaobjectを作成すると、CPU使用率が最大70〜90%になります。同じタスクがブラウザ用のFLashで解決されました。しかし、C++Qtのソリューションが必要です。他にアイデアはありません。video.flvは144x144で、長さは約7〜8秒です。

4

1 に答える 1

0

Phonon がフレームグラビングをサポートしているかどうかはわかりませんが、 Phonon プレーヤーを 1 つだけ持つことをお勧めします。次に、QImageオブジェクトにレンダリングされる各フレームのコピーを作成します。次に、4 つのウィンドウのそれぞれに 1 つずつ、QImage別の 4 つのオブジェクトに をコピーできます。QLabel

このソリューションでは、1 つのビデオのみをレンダリングするため、使用する CPU 処理が大幅に少なくなります。

真実は、Phonon が死にかけているということです。Qt MobilityQMediaPlayer/QVideoWidgetを提供します。これは操作が簡単で、フレームグラビングが可能です。アプリケーションをこのテクノロジに移行することをお勧めします。

于 2012-03-20T19:00:46.597 に答える