1

感谢 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具有相同的权限。

4

2 回答 2

1

代替

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

删除 ::fromLocalFile 并尝试

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

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

于 2016-01-21T15:07:33.540 回答
0

DirectShow 库似乎无法正确支持 UNC 路径。

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

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

于 2016-01-07T15:06:56.503 回答