javascript – Cordova – 捕获视频并检索base64数据

我正在使用phonegap录制视频,我想保存base64数据编码的字符串.到目前为止我试过这个..

function captureSuccess(mediaFiles) {
    var i,path,len;
    path = mediaFiles[0];
    win(path);
}

function win(file) {
    var reader = new FileReader();
    reader.onloadend = function (evt) {
        console.log("read success");
        console.log(evt.target.result);
    };
    reader.readAsDataURL(file); 
};

function captureError(error) {
    navigator.notification.alert('Error code: ' + error.code,null,'Capture Error');
}

function captureVideo() {
    navigator.device.capture.captureVideo(captureSuccess,captureError,{limit: 1});
}

我使用了documentation中指定的readAsDataURL.evt.target.result的输出是“data:video / mp4; base64”,但文件类型后没有任何编码数据.

为了获得视频的完整base64数据,还有什么我需要添加的吗?

我真的很难找到任何可以帮助我的东西.任何帮助将不胜感激.

解决方法

var b64toBlobAlt = function(dataURI,contentType) {
  var ab,byteString,i,ia;
  byteString = atob(dataURI.split(',')[1]);
  ab = new ArrayBuffer(byteString.length);
  ia = new Uint8Array(ab);
  i = 0;
  while (i < byteString.length) {
    ia[i] = byteString.charCodeAt(i);
    i++;
  }
  return new Blob([ab],{
    type: contentType
  });
};
var path = mediaFiles[0].fullPath;

window.resolveLocalFileSystemURL(path,function(fileEntry) {
  return fileEntry.file(function(data) {
    var reader = new FileReader();
    reader.onloadend = function(e) {
      var blob = b64toBlobAlt(e.target.result,'video/mp4');
      if (blob) {
         // do whatever you want with blob
        });
      }
    };
    return reader.readAsDataURL(data);
  });
});

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...