2015-09-23 33 views
1

我试图从使用UNC路径的网络加载视频感谢Qt 5.5 QMediaPlayer。 的代码片段是以下之一:使用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具有相同的权限。

回答

1

而不是

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

删除:: fromLocalFile并尝试

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

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

+0

在Windows 10上与Qt 5.5.0完美兼容。 –

0

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

您必须将文件复制到本地临时文件夹或将文件加载到QByteArray和流中。

这两种解决方案都不是很好的解决方案,而且微软贬低DirectShow以支持Media Foundation(目前对Media Foundation的支持有限)。