最近接到一个微信小程序的项目,客户要求将小程序视频上传到七牛云,并且由我们进行维护,大概看了下客户的需求,视频文件应该不少,每个月的费用自然也不少,小编在充值的时候突然看到有个优惠码选项,便在网上一搜,还真找到一个2019年最新的七牛优惠码:61d1fd4d 。试了一下真的可以用,优惠额度大概是10000以下99折,10000以上95折,客户让冲10000,我加了1块钱。冲了10001可以到账了10530多,足足多了500多元,这500多够我自己小博客多用好几年的,美滋滋。后面客户再冲的话,我可能冲9500就能到10000了 ,, 哈哈 这个还是要算一下,毕竟10000一下是99折,折扣小了。
**废话不多说。进入正题**:
想把微信小程序中的视频上传到七牛云,小程序官方提供了接口:https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html
通过这个接口,可以选择手机中的视频或者图片,然后使用七牛的SDK 进行上传。SDK有官方的,也有第三方的,我这里用的是
https://github.com/gpake/qiniu-wxapp-sdk(这个项目的README介绍的很详细了。具体用法不再复述)
这个SDK可以直接上传视频,并且可以时时检测上传的进度,还回返回预期上传视频的大小。用着还是比较顺手的。基本上大小视频用这个SDK都可以搞定。
但是在上传大视频的时候,由于手机设置,可能会息屏,导致上传失败或中止,这个时候就需要一个常亮功能,其实这个功能在小程序官方也是有的https://developers.weixin.qq.com/miniprogram/dev/api/setKeepScreenOn.html
// 保持屏幕常亮
wx.setKeepScreenOn({
keepScreenOn: true
})
至此,小程序上传大视频的功能基本完成。
这里在测试的时候,发现苹果手机上传的时候会出现错误,只要是 400M 以上的大视频文件,就 100% 报错 uploadFile:fail file path invalid。这里郁闷了好久,最后百度发现可能是苹果手机不支持那么大的文件,所以这里就需要对视频进行压缩,为了非iphone手机上传视频可以清晰流畅,需要对iphone手机进行判断,若为iphone则进行压缩,否则直接上传
wx.getSystemInfo({
success(res) {
console.log(res.platform) // 判断是否是 ios
}
})