js实现截取视频帧图片作为封面预览图

摘要:前端需要把视频文件的第一帧图像截取出来,并做为缩略图显示在页面上,这里需要利用HTML5中强大的画布canvas来实现该功能

前端需要把视频文件的第一帧图像截取出来,并做为缩略图显示在页面上,这里需要利用HTML5中强大的画布canvas来实现该功能。


代码如下:

<video id="video" controls="controls">
    <source src="../../assets/img/vedio/tomandjerry.mkv">
</video>
<div id="output"></div>
<script type="text/javascript">
    (function(){
        var video, output;
        var scale = 0.3;
        var initialize = function() {
            output = document.getElementById("output");
            video = document.getElementById("video");
            video.addEventListener('click',captureImage);
        };
 
        var captureImage = function() {
            var canvas = document.createElement("canvas");
            canvas.width = video.videoWidth * scale;
            canvas.height = video.videoHeight * scale;
            canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
 
            var img = document.createElement("img");
            img.src = canvas.toDataURL("image/png");
            output.appendChild(img);
        };
 
        initialize();
    })();
</script>


说明:

在使用canvas.toDataURL('image/png')的时候出现跨越问题 ,在服务器添加如下代码:Access-Control-Allow-Origin: *即可。

当然目前大部分云服务上,他们是有相应的接口来获取某一帧的画面。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_1143