我已将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文件中包含了多媒体,多媒体小部件和小部件。
gstreamer软件包也随sudo apt-get install gstreamer * libgstreamer *安装,版本为0.10。
我在VMWare上运行Debian Wheezy并尝试为i386台式机构建代码。
我错过了一些重要的内容,所以这段代码不起作用?只有我得到的是QWideo里面的黑色QVideoWidget窗口。
答案 0 :(得分:1)
我认为你忘了将播放列表设置为播放器:
player->setPlaylist(playlist);
答案 1 :(得分:1)
这对评论来说有点多,所以我做了一个答案。但是如果你使用你认识的视频会发生什么呢?
此外,我测试了以下最小片段(请参阅有关它的问题here)。也许在让它工作之后,可以在以后轻松地集成播放列表。
int main( int argc, char **argv ){
QApplication app(argc, argv);
QMediaPlayer *media=new QMediaPlayer(0);
QVideoWidget *video=new QVideoWidget(0); //new QGLWidget()
media->setVideoOutput(video);
media->setMedia(QUrl::fromLocalFile("/tmp/avatar.mp4"));
media->play();
video->show();
return app.exec();
}
答案 2 :(得分:1)
您的问题似乎与GStreamer有关。请安装一个gst123播放器(这是一个纯粹的基于gstreamer的播放器),并确保它播放文件没有打印错误。如果没有,QMediaPlayer也不会播放它。
如果gst123不起作用,它可以是:
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插件进行检查。