<view class="video-container" wx:for="{{videos}}">
<video id="myVideo" src="{{ item }}" poster="{{ posterUrl }}" controls></video>
</view>
getFile() {
const {
videoIds
} = this.data;
videoIds.forEach(item => {
wx.request({
url: app.globalData.httpUrl + '/sys/sysFileInfo/download?id=' + item, // 替换为实际接口地址
method: 'GET',
responseType: 'arraybuffer', // 指定返回的数据格式为 arraybuffer
success: (res) => {
if (res.statusCode === 200) {
const videoBytes = res.data; // 接口返回的视频文件字节数组
this.saveAndPlayVideo(videoBytes);
} else {
console.error('请求视频文件失败');
}
},
fail: (err) => {
console.error('请求视频文件失败', err);
}
});
})
},
// 将视频字节数组保存到临时文件并播放
saveAndPlayVideo(videoBytes) {
let {
videos
} = this.data;
const filePath = wx.env.USER_DATA_PATH + '/tempVideo.mp4'; // 临时文件保存路径,注意文件后缀应与实际视频格式一致
// 将视频字节数组写入临时文件
wx.getFileSystemManager().writeFile({
filePath: filePath,
data: videoBytes,
encoding: 'binary', // 指定写入数据的编码方式为二进制
success: () => {
console.log('视频文件保存成功', filePath);
videos.push(filePath)
this.setData({
videos: videos // 设置临时文件路径为视频播放源
});
},
fail: (err) => {
console.error('保存视频文件失败', err);
}
});
}