【问题标题】:Qt Play the same video in five Phonon::VideoWidgetQt 在五个 Phonon::VideoWidget 中播放相同的视频
【发布时间】:2012-03-20 18:43:45
【问题描述】:

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

     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,但不适用于两个或五个。如果我创建多个 Mediaobjects,我的 cpu 使用率会上升到 70-90%。同样的任务在浏览器的 FLash 中得到了解决。但我需要 C++ Qt 的解决方案。我没有任何其他想法。 video.flv 为 144x144,持续时间约为 7-8 秒。

【问题讨论】:

    标签: c++ qt video phonon


    【解决方案1】:

    我不知道 Phonon 是否支持帧抓取,但更好的办法是只有一个 Phonon 播放器,然后你会为每个帧制作一个副本被渲染到 QImage 对象。然后,您可以将 QImage 复制到另外 4 个 QLabel 对象,每个对象对应 4 个窗口。

    此解决方案使用的 CPU 处理量要少得多,因为您只会渲染一个视频。

    事实是 Phonon 正在消亡,而Qt Mobility 提供了QMediaPlayer/QVideoWidget,它们易于使用并允许帧抓取。我建议您将您的应用程序迁移到这项技术。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 2011-12-03
      • 2010-11-20
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多