2012-03-20 5 views
0

を私は5つのウィンドウに同じビデオを再生しようとしています:Qtは5フォノンで同じビデオを再生:: VideoWidget

 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秒です。

答えて

0

フォノンがをつかんフレームをサポートしているかどうかは知りませんが、良いアイデアは一つだけフォノンプレーヤーを持つこと、そしてあなたがQImageオブジェクトにrenderendedされている各フレームのコピーを作成しますです。 QImageを別の4 QLabelオブジェクト(4つのウィンドウのそれぞれに1つ)にコピーできます。

このソリューションでは、1つのビデオだけをレンダリングするため、CPU処理が大幅に減ります。

真実はフォノンが、死にかけているとQt Mobilityが作業が簡単で、をつかんフレームを可能にQMediaPlayer/QVideoWidgetを提供することです。アプリケーションをこのテクノロジに移行することをお勧めします。