我使用PhoneGap Build构建iOS应用程序并使用weinre进行调试。到目前为止一切都很好。
我正在尝试使用媒体捕获和文件API来捕获视频并获取其base64表示。我可以打开录像机,拍摄视频,然后返回。问题是我无法获得resolveLocalFileSystemURL来打开给定的路径。每次它返回错误代码为5时,我似乎无法找到关于这意味着什么的单一答案。这是在真实设备上运行,因此它不是模拟器的问题。
我已经查看了我可以通过Google和Stack Overflow找到的每个帖子我已经阅读了博文和其中的评论。在这个问题上已经有好几天了。提出答案的每个人都使用Xcode--而不是Build--或者答案根本不适用于我。这是一件非常简单的事情,我无法弄清问题可能在哪里......
以下是我的代码。下面是控制台输出。
elements["media_video"].onclick = function(event) {
navigator.device.capture.captureVideo(
function(files) {
for ( var i = 0 ; i < files.length ; ++i ) {
var file = files[i];
var name = file.name;
var path = file.fullPath;
var type = file.type;
var lastModifiedDate = file.lastModifiedDate;
var size = file.size;
console.log(0, name, path, type, lastModifiedDate, size);
var reader = new FileReader();
reader.onloadend = function(event) {
console.log(3, event.target.result);
};
window.resolveLocalFileSystemURL(
path,
function(entry) {
console.log(1, entry.name);
reader.readAsDataURL(entry);
// send base64 data to server
},
function(error) {
console.log(2, error.code);
}
);
}
},
function(error) {},
{
limit: 1
}
);
};
0&#34; capturedvideo.MOV&#34; &#34; /私有的/ var /移动/应用/ [应用 UUID] /tmp/capture/capturedvideo.MOV" &#34;视频/ QuickTime的&#34; 1409866447000 205788
2 5
修改1 我没有使用Xcode的Mac,这就是我选择基于云的服务的原因。
编辑2 在iOS v7.1.2上进行测试。
答案 0 :(得分:10)
从初始路径中取消/private
(在较旧的iOS版本[&lt; 7]上,您需要取消路径的/localhost
部分)。
出于某种原因,iOS认为您无法访问以private
开头的任何目录,即使完整路径最终落在您的沙箱中也是如此。令人沮丧的是调试,至少可以说,但一旦你知道要寻找什么,这是一个简单的修复。
编辑2014年8月5日6:06:
我刚刚注意到您也没有提供URL方案 - 您需要在路径前加file://
,否则会出现此特定错误。在致电resolveLocalFileSystemURL
之前,您的最终路径应如下所示:
file:///var/mobile/Applications/[application uuid]/tmp/capture/capturedvideo.MOV