js获取video元素第一帧画面

唯一遗憾的地方是不能在视频刚加载的时候就截出画面,我个人的做法是设置了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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。