我已将QVideoWidget作为子级添加到QWidget,并且我试图播放本地avi文件,但未成功。这是代码:

#include "widget.h"
#include <QApplication>
#include <QtWidgets>
#include <QtMultimediaWidgets>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget window;
    window.resize(320, 240);
    window.setWindowTitle(QApplication::translate("childwidget", "Child widget"));
    window.show();

    QMediaPlayer *player = new QMediaPlayer;

    QMediaPlaylist *playlist = new QMediaPlaylist(player);
    playlist->addMedia(QUrl::fromLocalFile("/home/designer/Desktop/drop.avi"));

    QVideoWidget *videoWidget = new QVideoWidget(&window);
    player->setVideoOutput(videoWidget);

    videoWidget->resize(320, 240);
    videoWidget->show();
    playlist->setCurrentIndex(1);
    player->play();

    return a.exec();
}


我在.pro文件中包含了多媒体,multimediawidgets和小部件。

gstreamer软件包也与sudo apt-get install gstreamer * libgstreamer *一起安装,版本为0.10。

我在VMWare上运行Debian Wheezy,并尝试为i386台式机构建该代码。

我是否错过了一些重要的内容,因此此代码无法正常工作?我唯一得到的是位于QWidget内部的黑色QVideoWidget窗口。

最佳答案

您的问题似乎与GStreamer有关。请安装gst123播放器(这是纯粹的基于gstreamer的播放器),并确保其播放文件时不会出现打印错误。如果没有,QMediaPlayer也将不会播放。

如果gst123不起作用,则为以下之一:


您尚未安装所有必需的GStreamer插件才能播放此文件。根据我的经验,您至少需要满足以下条件:



gstreamer-plugins-good
gstreamer-plugins-base
gstreamer-plugins-ugly
gstreamer-plugins-bad-orig-addon
gstreamer-plugins-qt5
gstreamer-plugins-bad
gstreamer-plugins-good-extra
gstreamer-plugins-ugly-orig-addon
gstreamer-plugins-libav



确保安装了正确版本的插件(例如,如果您的计算机具有gstreamer_0.10和gstreamer 1.x)。 Qt使用GStreamer 1.x


如果您使用的是OpenSuSE,那么您的GStreamer安装将受到严重损害,几乎没有用。您需要添加Packman存储库,然后使用“供应商更改”重新安装所有已安装的GStreamer软件包。
对于某些视频,VDPAU驱动程序会在QMediaPlayer中将其破坏(同时与gst123一起正常播放)-尝试删除gstreamer VDPAU插件进行检查。

关于c++ - QVideoWidget黑色窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34719486/

10-15 04:24