zoukankan      html  css  js  c++  java
  • vue视频截图第一帧demo

    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>

    <body>
        <div id="app">
            <video :src="videoSrc" crossOrigin="anonymous" controls="controls" width="500" height="400" id="videofile"></video>
            <input type="file" name="" id="file" accept="video/*" value="上传视频" @change="getBigectURL">
            <div id="output"></div>
        </div>
    </body>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                videoSrc: ''
            },
            methods: {
                getBigectURL(event) {
                    // console.log('getBigectURL', event)
                    var current = event.target.files[0]
                    var fileReader = new FileReader()
                    fileReader.readAsDataURL(current)
                    var that = this
                    fileReader.onload = function(e) {
                        that.videoSrc = e.currentTarget.result
                        console.log(that.videoSrc,11111)
                        const width = 300
                        const height = 400
                        var video = document.getElementById("videofile")
                        console.log(video,66666)
                        video.currentTime = 5 //必须设置视频当前时长,要不然会黑屏
                        var output = document.getElementById("output");
                        // 创建画布准备截图
                        var canvas = document.createElement('canvas')
                            // 创建图片标签
                        var img = document.createElement("img");
                        // 获取视频的标签
                        video = document.getElementById('videofile')
                        video.setAttribute('crossOrigin', 'anonymous')
                            // 设置画布的宽高
                        canvas.width = video.clientWidth
                        canvas.height = video.clientHeight
                            // 图片绘制
                        video.onloadeddata = (() => {
                            canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height)
                            var dataURL = canvas.toDataURL('image/jpeg')
                            // console.log(dataURL,"-----")
                            img.src = dataURL;
                            img.width = 400;
                            img.height = 300;
                            // 添加到output盒子里面
                            output.appendChild(img);

                            // console.log(img)
                        })
                    }

                },
            }
        })
    </script>

    </html>
  • 相关阅读:
    第七章 路由 68 路由-前端路由和后端路由的概念
    第六章 组件 67 使用ref获取DOM元素和组件引用
    第六章 组件 65-66 组件案例-发表评论功能的实现
    第六章 组件 63 组件传值-父组件向子组件传值和data与props的区别
    第六章 组件 62 组件-组件定义方式的复习
    第六章 组件 61 动画-小球动画flag标识符的作用分析
    第六章 组件 60 组件切换-应用切换动画和mode方式
    第六章 组件 59 组件切换-使用Vue提供的component元素实现组件切换
    vscode代码格式化 空格的配置
    vim配置C++开发环境 win10
  • 原文地址:https://www.cnblogs.com/wswm/p/13274588.html
Copyright © 2011-2022 走看看