2014-10-07 75 views
2

我正在尝试使用QMedia播放器播放视频文件。这是我的代码。它会弹出一个新窗口,但该文件无法播放。可变视频是一个QString,它保存文件的相对路径,在这种情况下,它将是“videos/wildlife.wmv”。我究竟做错了什么?试图播放视频

QMediaPlayer* player = new QMediaPlayer(this); 
    QMediaPlaylist* list = new QMediaPlaylist(); 
    QVideoWidget *vw = new QVideoWidget(); 
    list->addMedia(QUrl::fromLocalFile(video)); 
    player->setVolume(100); 
    player->setPlaylist(list); 
    player->setVideoOutput(vw); 
    vw->show(); 
    list->setCurrentIndex(0); 
    player->play(); 

我注意到在应用程序输出窗口,我得到这个消息如下: setGeometry:无法设置几何为0x0 + 480 + 190上QWidgetWindow/'QVideoWidgetClassWindow'。生成的几何体:116x0 + 480 + 190(帧:8,30,8,8,自定义边距:0,0,0,0,最小尺寸:0x0,最大尺寸:16777215x16777215)。

谢谢。 熊

回答

1

这种错误可能是由错误的道路造成的到文件(当你的文件没有加载,那么播放器没有任何显示)。例如,当您将未出现的像素图设置为标签时,您将得到相同的错误。

尝试:

集满到您的文件和支票路径是再正常不过了。

使用QFile::exists()来确保您的文件(相对路径)存在。

当我在我的电脑(MOV文件格式)上试过你的代码时,我得到了同样的错误,我没有看到视频,但是我听到了声音。我是如何将它固定在我的电脑上的?尝试至少下一个,也许它有帮助:

我以编程方式调整QVideoWidget的大小。例如:

//your code 
player->setVideoOutput(vw); 
vw->show(); 
vw->resize(1000,600);//Add this line 
list->setCurrentIndex(0); 
player->play(); 
+0

我试图用相同的结果设置完整路径。我做了相对路径检查,它确实存在。 – Bear35645 2014-10-07 20:47:32

+0

@ Bear35645请看我的编辑。我在我的电脑上试过你的代码,也许找到了解决办法。你现在可以看视频吗? – Chernobyl 2014-10-08 15:53:23

+0

@Chernobly谢谢。这工作。 – Bear35645 2014-10-08 16:07:58

2

您需要分配播放列表播放器:

player->setPlaylist(list); 

而且从列表中的起点开始:

list->setCurrentIndex(0); 
+0

我也试过这个,结果也一样。 – Bear35645 2014-10-07 20:47:58

+0

@ Bear35645,我已经更新了我的答案。 – 2014-10-07 21:24:53

+0

谢谢。我进行了您建议的更改并更新了我的原始帖子以匹配我当前的代码。不幸的是我仍然得到相同的结果。 – Bear35645 2014-10-07 21:34:05