js上传视频获取第一帧截图

该文描述了如何从本地file对象获取视频url,然后创建video标签播放视频,并在视频加载完成后利用canvas捕获第一帧画面,将其转换为base64格式的数据流。这个过程涉及到了浏览器的API如createObjectURL和canvas的drawImage方法,以及事件监听onloadeddata。
摘要由CSDN通过智能技术生成

1.获取视频的url,如果是file文件,先转成url

file转url方法:

        function getFileURL(file) {
            var url = null ;
            if (window.createObjectURL!=undefined) { // basic
                url = window.createObjectURL(file) ;
            } else if (window.URL!=undefined) { // mozilla(firefox)
                url = window.URL.createObjectURL(file) ;
            } else if (window.webkitURL!=undefined) { // webkit or chrome
                url = window.webkitURL.createObjectURL(file) ;
            }
            return url ;
        }

2.创建video标签,将视频url赋给src,然后再创建画布canvas,将视频的第一帧画到画布上,最后通过canvas.toDataURL('image/png')获取图片的base64文件流。

function getVideoScreenShot(url){
            var listHtml = '<video id="video" class="video" controls="controls">'+
                '<source src="'+url+'">'+
                '</video>'+
                '<div class="output"></div>';
            $('.big-box').append(listHtml);
            //创建画布
            var canvas = document.createElement('canvas')
            var video = $('.video')[0];
            video.preload = true;
            video.autoplay = true;
            video.muted = true;
            video.setAttribute('crossOrigin', 'anonymous');
            //设置画布的宽和高,
            canvas.width = 385;
            canvas.height = 200;
            video.onloadeddata = (() => {
                canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height)
                var dataURL = canvas.toDataURL('image/png');
                ... 
                // 删除掉不需要的video标签部分
                $('.big-box .video').remove();
             })

}

3.获取到dataURL后,一般在video.onloadeddata方法里进一步对dataURL做接下来的操作,video.onloadeddata方法有延迟,如果直接返回dataURL,或返回undefind。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值