使用QMediaPlayer和UNC路径加载视频

时间:2015-09-23 12:08:58

标签: qt qt5 multimedia unc qmediaplayer

由于Qt 5.5 QMediaPlayer,我尝试使用UNC路径从网络加载视频。 代码段如下:

projectDirectory = QFileDialog::getExistingDirectory (this,
                                                      tr ("Choose project folder (sensor + video data"),
                                                      QDir::homePath(), QFileDialog::ShowDirsOnly);

QDir dir(projectDirectory);
QStringList test = dir.entryList();
qDebug () << projectDirectory << "contains:" << endl << test;
mediaPlayer.setMedia(QUrl::fromLocalFile(projectDirectory+"/video.mov"));

代码段适用于本地文件,但当路径以//开头时不起作用。

示例输出:

"//m4800/Partage/111" contains: 
(".", "..", "HandBrake.txt", "sensors.csv", "video.mov")
DirectShowPlayerService::doSetUrlSource: Unresolved error code 80004005

请注意,我能够阅读sensors.csv文本文件,video.mov具有相同的权限。

2 个答案:

答案 0 :(得分:1)

而不是

xmldocument

remove :: fromLocalFile并尝试

mediaPlayer.setMedia(QUrl::fromLocalFile(projectDirectory+"/video.mov"));

这似乎解决了这个问题。在我正在处理的代码库中,我们添加了一个检查&#34; //&#34;在创建URL之前的原始路径的开头,检查它是否为UNC路径,如果不是,则仍然使用fromLocalFile。

答案 1 :(得分:0)

DirectShow库似乎不能正确支持UNC路径。

您必须将文件复制到本地临时文件夹或将文件加载到QByteArray并从那里流式传输。

两者都不是一个很好的解决方案,而且微软贬低了DirectShow,转而支持Media Foundation(目前播放支持有限)。