唯一遗憾的地方是不能在视频刚加载的时候就截出画面,我个人的做法是设置了500毫秒的回调。
google找了好多教程,他们也没办法解决这个问题。
<!DOCTYPE html>
<html>
<body>
<video id="video" oncanplay="canplay(event)"></video>
<input id="input" type="file" accept="video/*" onchange="change(event)" />
<img id="img" alt="第一帧截图">
</body>
<script>
var video = document.getElementById('video')
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
function change(e) {
video.src = window.URL.createObjectURL(e.target.files[0]);
video.load()
}
function canplay(e) {
setTimeout(() => {
canvas.width = e.target.videoWidth
canvas.height = e.target.videoHeight
ctx.drawImage(e.target, 0, 0);
img.src = canvas.toDataURL();
}, 500); //让它等500毫秒再执行以上操作
}
</script>
</html>