Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt在五个声子中播放相同的视频::VideoWidget_C++_Qt_Video_Phonon - Fatal编程技术网

C++ Qt在五个声子中播放相同的视频::VideoWidget

C++ Qt在五个声子中播放相同的视频::VideoWidget,c++,qt,video,phonon,C++,Qt,Video,Phonon,我尝试在五个窗口中播放相同的视频: Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); media = new Phonon::MediaObject(this); media->setCurrentSource(Phonon::MediaSource("v

我尝试在五个窗口中播放相同的视频:

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

我不知道Phonon是否支持帧抓取,但更好的办法是让只有一个Phonon player,然后你可以将渲染到
QImage
对象的每个帧复制一份。然后,您可以将
QImage
复制到另外4个
QLabel
对象,每个对象对应4个窗口

此解决方案使用更少的CPU处理,因为您将只渲染一个视频

事实是,声子正在消亡,并且提供了简单易用且允许抓取帧的功能。我建议您将应用程序转移到这项技术