PhoneGap Build를 사용하여 iOS v7.1 + 응용 프로그램을 빌드하고 weinre을 사용하여 디버깅합니다. 나는 media-capture plugin과 file API를 사용하여 비디오를 포착하고 base64 표현을 시도한다. 비디오 레코더를 열어 비디오를 가져 와서 파일 경로를 반환 할 수 있습니다. 그런 다음 readAsDataURL()
에 필요한 파일 객체를 얻으려면 resolveLocalFileSystemURL()
을 사용합니다. 문제는 FileReader
이며 결코 onloadend
콜백으로 전화하지 않습니다.PhoneGap FileReader/readAsDataURL 콜백을 트리거하지 않음
나는 하루 종일 주위를 파고 들었다. console.log()
은 어디에서나 생각할 수 있습니다. iOS 버전 is supported을 확인했습니다. 모든 변수는 콜백이 단순히 호출되지 않는다고 기대하는 바입니다. 나는 또한 모든 다른 콜백을 설정하려고했지만 어느 누구도 콜백을받지 못했다. 나는 readAsText()
로 readAsDataURL()
을 대체하려고 노력했다. 그러나 나는 여전히 bupkis를 얻는다. 나는 비동기 호출이 조금 걸릴지도 모른다고 생각했기 때문에 최대 5 분을 기다려 보았습니다.
아래 코드는 제 코드입니다. 아래 콘솔 출력입니다.
var elements = new Object();
elements["video"] = $("#window_incident_create > .video > source")[0];
navigator.device.capture.captureVideo(
function(files) {
for (var i in files) {
var file = files[i];
var name = file.name;
var path = file.fullPath;
if (path.indexOf("/private") === 0)
path = "file://" + path.substr(8);
else
path = "file://" + path;
var type = file.type;
var lastModifiedDate = file.lastModifiedDate;
var size = file.size;
var reader = new FileReader();
reader.onloadend = function(event) {
console.log(3);
elements["video"].type = type;
elements["video"].src = "data:" + type + ";base64," + event.target.result;
console.log(4);
};
window.resolveLocalFileSystemURL(
path,
function(entry) {
console.log(1, entry.nativeURL);
reader.readAsDataURL(entry);
console.log(2);
},
function(error) {
console.log("0-0", error);
}
);
}
},
function(error) {
console.log("0-1", error);
},
{
limit: 1
}
);
1 "파일 : ///var/mobile/Applications/AB239984-FB9F-43C0-B699-3596AC8A43A8/tmp/capture/capturedvideo.MOV"
2
혹시이 알아낼 했습니까? – Justin