我正在使用一个接受绝对路径作为参数的视频播放器。如果我将视频放在www
文件夹中,请使用以下代码:
var path = cordova.file.applicationDirectory + 'www/myvideo.mp4';
GoogleVRPlayer.playVideo(path);
视频开始播放。日志告诉我视频在:
file:///var/containers/Bundle/Application/F4D23EDE-...-...-...-.../appname.app/www/myvideo.mp4
但是,我不希望我的视频在应用程序中“烘焙”:我希望用户先下载它。要下载,我使用cordova-plugin-file-transfer
:
download()
{
this.fileTransfer.download(
this.uri,
'cdvfile://localhost/persistent/path/to/downloads/',
function(entry) {
console.log("download complete: " + entry.toURL());
},
function(error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("download error code" + error.code);
},
false,
{
headers: {
"Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
}
}
);
}
这也很好用。视频下载,日志告诉我视频存储在
中file:///var/mobile/Containers/Data/Application/785BC9AF-...-...-...-.../Documents/path/to/downloads
请注意,“Application”之后的ID对于两个文件都不同。此外,下载文件的URL中不存在appname.app
。但视频必须是应用的一部分,因为下载视频后应用尺寸会增加...
如何让插件下载www
文件夹中的文件,以便我可以播放?或者,我应该在播放器中使用哪条路径,以便播放在path/to/downloads
下载的视频?
更新1:添加了额外信息
更新2:
我已将第一条路径更改为
cordova.file.documentsDirectory + 'path/to/downloads/myvideo.mp4';
。
控制台告诉我视频存储在:
file:///var/mobile/Containers/Data/Application/A9B73639-...-...-...-.../Documents/path/to/downloads
它正在尝试播放的视频是:
file:///var/mobile/Containers/Data/Application/A9B73639-...-...-...-.../Documents/path/to/downloads/myvideo.mp4
但是,播放器不播放文件:Failed to load video: The operation could not be completed
答案 0 :(得分:1)
编辑2:
用户解决了该问题。
这是路径错误。在fileTransfer函数中将下载文件的名称设置为参数更正了问题。
修改强>
我看到你正在使用VR播放器插件。查看文档,它使用Google的VR播放器作为插件的基础。您是否可以通过填写指南在网络浏览器中播放视频:
https://developers.google.com/vr/concepts/vrview-web
这将确认视频与插件使用的播放器兼容。
原始答案:
如果要存储下载的文件,最好使用Cordova文件插件。
cordova plugin add cordova-plugin-file
将此与文件传输插件结合使用
cordova plugin add cordova-plugin-file-transfer
问题在于,根据文件插件文档,只有在安装了应用程序后才会读取/ www文件夹,因此您无法在那里下载和存储文件。
此处的文档。
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/