js获取video任意时间的画面截图

更新时间:2019-04-16 09:12:00点击次数:1085次
首先就是要把视频加载出来,然后使用canvas.getContext(‘2d’).drawImage(videoElement, 0, 0, canvas.width, canvas.height);获取到当前视频时间的截图,需要不同时间的video视频图,设置video的currentTime(单位秒),然后videoElement这个对象信息会实时更新。

如果是视频是在阿里云OSS上就更方便了,poster=“http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?x-oss-process=video/snapshot,t_6000,m_fast”

<div contenteditable="true" id="in-box" style="width:1000px;margin: 20px auto;"></div>
<div style="width:1000px;margin: 20px auto;">        
   <input type="file" name="" id="upload-ipt">
   <div class="review" id="out-box"></div>
</div>

function getVideoImage() {
    var obj_file = document.getElementById("upload-ipt");
    var file = obj_file.files[0];
    var blob = new Blob([file]), // 文件转化成二进制文件
        url = URL.createObjectURL(blob); //转化成url
    if (file && /video/g.test(file.type)) {
        var $video = $('<div><video controls src="' + url + '"></video></div><div>&nbsp;</div>');
        //后面加一个空格div是为了解决在富文本中按Backspace时删除无反应的问题
        $('#in-box').html($video);
        var videoElement = $("video")[0];
        videoElement.addEventListener("canplay", function (_event) {
            var canvas = document.createElement("canvas");                    
            canvas.width = videoElement.videoWidth;
            canvas.height = videoElement.videoHeight;
            console.log(videoElement.videoWidth)
            canvas.getContext('2d').drawImage(videoElement, 0, 0, canvas.width, canvas.height);
            var img = document.createElement("img");
            img.src = canvas.toDataURL("image/png");
            $("#out-box").html(img);
            URL.revokeObjectURL(this.src); // 释放createObjectURL创建的对象
            console.log("loadedmetadata")
        });
    }else{
        alert("请上传一个视频文件!");
        obj_file.value = ""
    }
};

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息