最近在学习WebAssembly,因为是提升性能,所以一直在使用canvas 做一些尝试。今天就突发奇想以前看见的抖音多帧延迟的装饰,今天就来分析实现下。
多帧延迟
先简单分析下这个效果,假设咱们有一个视频是宽400x300, 分为100个40x30的小方格,用固定的时间间隔播放格子。
- 视频顺序播放
async function initVideo() {
const stream = await navigator.mediaDevices.getUserMedia({
video: {
width:400,
height:300
}
});
video = document.querySelector('video');
video.srcObject = stream;
video.addEventListener('loadeddata', function(){
video.play()
cs.width = video.videoWidth;
cs.height = video.videoHeight;
drawCanvas(video);
}, false);
});
}
- 创建数组Array(100);
let w = Math.floor(cs.width/obj.w); let h = Math.floor(cs.height/obj.h); list = new Array(w*h);