C++ QVideoWidget黑色窗口
我将QVideoWidget作为一个孩子添加到QWidget中,我正在尝试播放本地avi文件,但没有成功。代码如下:C++ QVideoWidget黑色窗口,c++,qt,user-interface,video,C++,Qt,User Interface,Video,我将QVideoWidget作为一个孩子添加到QWidget中,我正在尝试播放本地avi文件,但没有成功。代码如下: #include "widget.h" #include <QApplication> #include <QtWidgets> #include <QtMultimediaWidgets> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widge
#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();
}
#包括“widget.h”
#包括
#包括
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
窗口小部件;
调整窗口大小(320240);
setWindowTitle(QApplication::translate(“childwidget”、“childwidget”);
window.show();
QMediaPlayer*player=新的QMediaPlayer;
QMediaPlaylist*播放列表=新QMediaPlaylist(播放器);
播放列表->添加媒体(QUrl::fromLocalFile(“/home/designer/Desktop/drop.avi”);
QVideoWidget*videoWidget=新的QVideoWidget(&窗口);
播放器->设置视频输出(videoWidget);
videoWidget->调整大小(320240);
videoWidget->show();
播放列表->设置当前索引(1);
player->play();
返回a.exec();
}
我在.pro文件中包括了多媒体、多媒体小部件和小部件
此外,gstreamer软件包与sudo apt get install gstreamer*libgstreamer*一起安装,版本为0.10
我正在VMWare上运行Debian Wheezy,并试图为i386桌面机构建该代码
我是不是遗漏了一些重要的东西,所以这段代码无法工作?我唯一得到的是parrent QWidget内的黑色QVideoWidget窗口。我想你忘了将播放列表设置为播放器:
player->setPlaylist(playlist);
我想你忘了将播放列表设置为播放器:
player->setPlaylist(playlist);
这是一个有点多的评论,所以我作出了回答。但是如果你使用一个你知道有效的视频会发生什么呢 此外,我还测试了以下最小的代码片段(请参见关于它的问题)。也许在这项工作完成后,整合播放列表就可以很容易地完成了
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();
}
这是一个有点多的评论,所以我作出了回答。但是如果你使用一个你知道有效的视频会发生什么呢 此外,我还测试了以下最小的代码片段(请参见关于它的问题)。也许在这项工作完成后,整合播放列表就可以很容易地完成了
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();
}
您的问题似乎与GStreamer有关。请安装gst123播放器(纯粹基于gstreamer的播放器),并确保播放文件时没有打印错误。如果没有,QMediaPlayer也不会播放它 如果gst123不工作,则为以下任一情况:
您的问题似乎与GStreamer有关。请安装gst123播放器(纯粹基于gstreamer的播放器),并确保播放文件时没有打印错误。如果没有,QMediaPlayer也不会播放它 如果gst123不工作,则为以下任一情况:
我加了那句话,它的作用是一样的。黑屏和错误:“GStreamer错误:GStreamer遇到一般流错误”
playlist->setCurrentIndex(1)
-为什么是1?也许应该是0?我想问题出在GStreamer中。尝试了0,但什么都没有。我还有一个问题。什么是小部件窗口代码>可能QWidget
?我在我的windows机器上用我的补丁和QWidget
而不是Widget
尝试你的代码,效果很好。是的,我认为在QWidget上@叶夫根尼补充了这句话,它的作用也一样。黑屏和错误:“GStreamer错误:GStreamer遇到一般流错误”playlist->setCurrentIndex(1)
-为什么是1?也许应该是0?我想问题出在GStreamer中。尝试了0,但什么都没有。我还有一个问题。什么是小部件窗口代码>可能QWidget
?我在我的windows机器上用我的补丁和QWidget
而不是Widget
尝试你的代码,效果很好。是的,我认为在QWidget上@EVGENY您是否已验证该视频文件实际上在gstreamer中播放?我相信图腾播放器使用gstreamer作为本机后端,因此如果它在那里播放,这是一个好迹象。您是否验证了视频文件实际上在gstreamer中播放?我相信图腾播放器使用gstreamer作为本机后端,因此如果它在那里播放,这是一个好迹象。