该问题最关键的一步是将后端传回来的流,转化成视频,并播放。
1、从服务器请求数据流到前端
2、新建一个临时文件,将数据流写入这个文件里面,并自定义路径+命名。
const fs = wx.getFileSystemManager(); //获取全局唯一的文件管理器fs.writeFile({ })
3、可以将该文件保存到相册(这一步也可以不保存)
wx.saveVideoToPhotosAlbum({ // 新开页面打开文档filePath: wx.env.USER_DATA_PATH + "/myvideo.mp4", //拿上面存入的文件路径success: function (res) {}})
4、直接用video播放这个临时文件路径即可。
直接上代码:
<video :src="src"></video>uni.request({url: 服务器地址,method: 'GET',responseType: 'arraybuffer',header: {Authorization: 'Bearer ' + user.DEFAULT_USER.access_token},success: res => {const fs = wx.getFileSystemManager(); //获取全局唯一的文件管理器fs.writeFile({ // 写文件filePath: wx.env.USER_DATA_PATH + "/myvideo.mp4", // 指定临时文件存入的路径,后面字符串自定义data: res.data,encoding: "binary", //二进制流文件必须是 binarysuccess(res) {console.log('写入成功', res)this.src = wx.env.USER_DATA_PATH + "/myvideo.mp4"})}});},});