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>
原文地址:https://www.cnblogs.com/wswm/p/13274588.html