zoukankan      html  css  js  c++  java
  • 截取视频第一帧图片

    利用canvas的drawImage() API,第一个参数传video可以将视频当前帧画到画布上,(这里示例是第一帧),

    以下代码需要注意:因为跨域限制,必须放到web服务器上运行(比如localhost),如果直接是在硬盘上的文件系统打开是不行(file://...)的。

    另外,这里示例上用的是本地存了一个视频文件,实际项目时如果脚本和视频不在同一个域还是会发生跨域问题,参数另一篇帖子

     getVideoCover() 就是获取视频的函数,可以直接调用。

    <!DOCTYPE html>
    <html>
    
    <body>
        <img id="img">
        <script>
            function getVideoCover(url, width = null, height = null) {
                return new Promise((resolve, reject) => {
                    const canvas = document.createElement('canvas');
                    const video = document.createElement('video');
                    document.body.appendChild(video);
                    video.setAttribute('crossOrigin', 'anonymous');
                    canvas.width = width ? width : video.clientWidth;
                    canvas.height = height ? height : video.clientHeight;
                    video.style.height = '0';
    
                    video.onloadeddata = (() => {
                        setTimeout(() => {
                            canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
                            let b64 = canvas.toDataURL('image/png');
                            document.body.removeChild(video);
                            resolve(b64);
                        }, 100);
                    });
                    video.setAttribute('src', url);
                });
            }
            getVideoCover('./videoplayback.mp4', 200, 150).then((base64) => {
                document.getElementById('img').setAttribute('src', base64);
            });
        </script>
    </body>
    
    </html>
  • 相关阅读:
    解决js跨域问题
    JS中如何使用Cookie
    js 概念(构造函数)
    js中this的用法
    ORA-00932:类型类型不一致
    记录一次使用 Comparator排序
    Element-ui Message消息提示限制弹出一次
    IDEA启动Tomcat的时候8080端口被占用(MyEclipse类似)
    JAVA中JSONObject对象和Map对象之间的相互转换
    MySQL笔记 【狂神说】
  • 原文地址:https://www.cnblogs.com/johnjackson/p/13736217.html
Copyright © 2011-2022 走看看