资讯专栏INFORMATION COLUMN

cordova录音转base64上传七牛

cfanr / 3310人阅读

摘要:目前公司的项目是基于,领导要加类似微信的语音聊天功能,看了看七牛的文档跟源码,功能有太多我用不上的。先前上传图片用的是七牛提供的上传方法,那如果把录音转成,也就可以上传到七牛了。录音的组件我最终用的,录音出来的格式是,跟都支持播放。

目前公司的webapp项目是基于meteor+react+cordova,领导要加类似微信的语音聊天功能,看了看七牛的文档跟源码,功能有太多我用不上的。先前上传图片用的是七牛提供的base64上传方法,那如果把录音转成base64,也就可以上传到七牛了。

录音的组件我最终用的cordova-plugin-media-with-compression,录音出来的格式是.m4a,iOS跟Android都支持播放。

cordova-plugin-media-with-compressioncordova-plugin-media在Android端有区别。var filename = "xxxx.m4a"; mediaRec = new Media(filename);前者录完音是在原音频基础上增量录,而后者则Android跟iOS一样都是每次重新录音,这里我采用了每次录音var filename = Date.now() + ".m4a"的方法解决这个问题

//转base64的代码

getFileContentAsBase64(path,callback){
  window.resolveLocalFileSystemURL(path, gotFile, fail);

  function fail(e) {
    alert("Cannot found requested file");
  }

  function gotFile(fileEntry) {
    fileEntry.file((file) => {
      var reader = new FileReader();
      reader.onloadend = function(e) {
        var content = this.result;
        callback(content);
      };
      // The most important point, use the readAsDatURL Method from the file plugin
      reader.readAsDataURL(file);
    });
  }
}

其中path参数需要做下判断,iOS与Android的路径不同,这里我使用了cordova-plugin-file插件,代码如下:

var path;
var filename = Date.now() + ".m4a";
if(device.platform == "iOS") {
  path = cordova.file.tempDirectory + filename;
} else if(device.platform == "Android") {
  path = cordova.file.externalRootDirectory + filename;
}

然后录音成功后调用getFileContentAsBase64即可

var mediaRec = new Media(filename, function() {
  getFileContentAsBase64(path, function(base64) {
    var audio = base64.split(",")[1];  //七牛要求填写base64后的字符串
    var key = "上传到七牛的名字";
    var url = `http://up-z1.qiniu.com/putb64/-1/key/${btoa(key)}`;
    //华北是up-z1,华南可能是up或upload,我忘记了
    //剩下的就参考文章开头给的七牛base64上传方法链接
  }
})

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80942.html

相关文章

  • 浅析前端上传

    摘要:项目上也用到很多上传文件的地方,七牛云,阿里云,讯飞上传都接触过,所以在这里做一个记录,总结一下前端上传的几种方式。类型的文件名七牛云上传浅析是一个基于七牛开发的前端。 showImg(https://segmentfault.com/img/bVbvibu?w=1920&h=1080); 图片,音频,视频等等这几种常见的资源类型,如果需要从前端上传到服务端,有几种方式呢?不妨回顾一下...

    terro 评论0 收藏0
  • 在Python中使用谷歌Cloud Speech API将语音换为文字(另一种方案)

    摘要:如果你有疑问,或许可以参考创建密钥使用谷歌将语音转换为文字。将其取出,得到字典。 在之前发布的使用谷歌Cloud Speech API将语音转换为文字一文中,我们实现了在控制台使用curl发送post请求,得到语音转文字的结果;而在Python中使用谷歌Cloud Speech API将语音转换为文字一文中,我们实现了安装Cloud Speech API客户端库,通过调用库函数得到语音...

    ethernet 评论0 收藏0
  • 业务开发情境之:文本框的base64编码图片粘贴直接上传七牛

    摘要:我们的功能需要用到的接口事件读取完成,无论成功与否,还有方法将文件读取为。检测是否为图片类型图片的编码这里设置获取的数据获取后台的给的将文件读取为上传事件当的时候说明我们成功的把图片传上七牛了,并且七牛给我们返回了一个字符串。 最近在做的一个聊天消息的功能。有个图片上传的功能,可以通过按钮上传也可以通过Ctrl+V上传。按钮上传的我们可以通过七牛的API就可以做了,我们现在来说说Ctr...

    xiao7cn 评论0 收藏0
  • 七牛上传截图后的base64位遇到的问题总结

    摘要:,具体实现源码上传图片获取地址获取创建对象,用于和服务器交换数据存储函数,每当改变,便会调用该函数上传成功最终终于实现了七牛云上传的问题,如果还有问题的可以下方留言 最近公司内部项目遇到上传base64位图片到七牛云,并且自定义key存储,在解决过程遇到很多问题,但是最终经过请教,都得到结果,故在这里总结一下... 官方文档 1,布局代码如下: ...

    张汉庆 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<