2012-03-20 2 views
0

을 내가 다섯 개 창에서 동일한 비디오를 재생하기 위해 노력하고있어 :Qt는 다섯 포논에서 동일한 비디오를 재생 :: 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(); 
} 

이 코드는 하나의 VideoWidget 작동,하지만 두 개 또는 다섯. 여러 개의 MediaObject를 만들면 CPU 사용량이 최대 70-90 % 증가합니다. 동일한 작업이 브라우저 용 FLASH에서 해결되었습니다. 하지만 C++ Qt에 대한 솔루션이 필요합니다. 나는 다른 어떤 아이디어도 갖고 있지 않다. video.flv는 144x144이며 재생 시간은 약 7-8 초입니다.

답변

0

포논이을 잡아 프레임을 지원하지만 더 나은 아이디어가 하나의 포논 플레이어를하는 경우 나도 몰라, 다음 각 프레임의 사본이 QImage 객체에 renderended되고 만들 것입니다. QImage을 다른 4 개의 QLabel 개체 (4 개의 창 각각에 하나씩)로 복사 할 수 있습니다.

이 솔루션은 하나의 비디오 만 렌더링하므로 CPU 처리가 훨씬 적습니다.

진실은 포논이 죽어되고 Qt Mobility이 작업이 간단하고 프레임을 잡을 수 있습니다 QMediaPlayer/QVideoWidget 제공한다는 것입니다. 응용 프로그램을이 기술로 옮기는 것이 좋습니다.