微信小程序,保存视频到相册的问题
正在自己写一个下载无水印视频的微信小程序,已经实现解析地址和获得视频地址,并通过video组件在线播放。到了最后一步【保存视频到相册】出了问题,保存代码是这样的。
// 保存视频到相册
bindSaveVideoToPhotosAlbum: function () {
console.log('保存视频到相册:', that.data.thisVideoUrl)
wx.saveVideoToPhotosAlbum({
filePath: that.data.thisVideoUrl,
success(res) {
console.log(res.errMsg)
},
fail(res) {
console.log('保存视频失败:', res.errMsg)
}
})
},
console.log输出报错是这样的:
保存视频到相册: http://tbvideo.ixiaochuan.cn/zyvd/5a/2c/6642-094d-11ec-8599-00163e02c2d6
保存视频失败: saveVideoToPhotosAlbum:fail file not exists
我们把视频地址复制到浏览器很容易就校验到视频地址是有视频的,但却报错文件不存在?不知道什么原因,请各位指教。
我虽然不懂 但支持你。 试试readfile()不然还要配置多个视频域名到小程序
水印小程序某手不是才把某某告上法庭么
建议不要搞了 下载几个程序照抄啊哦不对借鉴啊 我觉得是小程序downloadFile域名问题,你解析出来的地址,必须要配进去。但是短视频很多平台不可能每个域名都找出来吧,所有我觉得要设置nginx反代。
你可以试试添加这行规则到nginx的配置文件中。
成功了告诉我,我也想搭建来玩玩。
# 根据url参数回源视频资源
resolver 8.8.8.8; #必须
location ~/download {
if ($query_string ~*^(.*)url=(.*)$){
set $url $2;
proxy_pass $url;
}
} 我虽然不懂 但支持你。 向开发者表示敬意 我这个支持队列 还可以批量下载多个视频,一个更不在话下,拿去用吧
downloadvideo(event) {
var _this = this;
var id = (event.currentTarget.id).split(",");
// 获取保存到相册权限
writePhotosAlbum(
function success() {
wx.showLoading({
title: '加载中',
mask: true
})
// 调用保存图片promise队列
_this
.queue1(id)
.then(res => {
wx.hideLoading()
wx.showToast({
title: '下载完成'
})
})
.catch(err => {
wx.hideLoading()
console.log(err)
})
},
function fail() {
wx.showToast({
title: '您拒绝了保存到相册'
})
}
)
},
// 队列
queue1(urls) {
let promise = Promise.resolve()
urls.forEach((url, index) => {
promise = promise.then(() => {
return this.download1(url)
})
})
return promise
},
// 下载
download1(url) {
return new Promise((resolve, reject) => {
wx.downloadFile({
url: url,
success: function(res) {
var temp = res.tempFilePath
wx.saveVideoToPhotosAlbum({
filePath: temp,
success: function(res) {
resolve(res)
},
fail: function(err) {
reject(res)
}
})
},
fail: function(err) {
reject(err)
}
})
})
}, 期待你成功 保存 的视频路径,必须是本地路径。
你可以先downloadFile获取到本地临时路径,然后再保存。
页:
[1]
2