绘制视频封面 js
updateVideo() {
if (!this.canvas) {
this.canvas = document.getElementById('app-attachment-canvas');
}
for (let i in this.attachments) {
if (this.attachments[i].type == 'video') {
if (this.attachments[i].duration) {
continue;
}
let times = 0;
let video = null;
const maxRetry = 10;
const id = 'app_attachment_' + this._uid + '_' + i;
const timer = setInterval(() => {
times++;
if (times >= maxRetry) {
clearInterval(timer);
}
if (!video) {
video = document.getElementById(id);
}
if (!video) {
return;
}
try {
const zoom = 0.15;
this.canvas.width = video.videoWidth * zoom;
this.canvas.height = video.videoHeight * zoom;
this.canvas.getContext('2d').drawImage(video, 0, 0, this.canvas.width, this.canvas.height);
this.attachments[i].cover_pic_src = this.canvas.toDataURL('image/jpg');
console.log(this.attachments[i].cover_pic_src);
} catch (e) {
console.warn('获取视频封面异常: ', e);
}
if (video.duration && !isNaN(video.duration)) {
let m = Math.trunc(video.duration / 60);
let s = Math.trunc(video.duration) % 60;
m = m < 10 ? `0${m}` : `${m}`;
s = s < 10 ? `0${s}` : `${s}`;
this.attachments[i].duration = `${m}:${s}`;
clearInterval(timer);
}
}, 500);
}
}
},
```