我正在使用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“ capturedvideo.MOV”“ / private / var / mobile / Applications / [应用程序
[uuid] /tmp/capture/capturedvideo.MOV“”视频/快速时间“ 1409866447000
205788
2 5
编辑1
我没有可使用Xcode的Mac,这就是为什么我选择基于云的服务。
编辑2
在iOS v7.1.2上进行测试。
最佳答案
取消/private
的初始路径(在较旧的iOS版本[/localhost部分)。
出于某种原因,iOS认为,即使完整路径最终落在沙箱中,您也无法访问以private
开头的任何目录。至少可以说,调试令人沮丧,但是一旦知道要查找的内容,这很容易解决。
编辑8/5/2014 6:06:
我刚才注意到,您也没有提供URL方案-您必须在路径前添加file://
,否则会出现此特定错误。在调用resolveLocalFileSystemURL
之前,您的最终路径应如下所示:
file:///var/mobile/Applications/[application uuid]/tmp/capture/capturedvideo.MOV