美文网首页
利用Input 实现视频上传及获取视频第一帧-视频系列(1)

利用Input 实现视频上传及获取视频第一帧-视频系列(1)

作者: 逸笛 | 来源:发表于2021-04-30 13:13 被阅读0次

手动获取视频第一帧:

<template>
    <div>
        <video controls style="width:300px;"></video>
        <img :src="imgSrc">
        <div>
            <botton @click="cutPicture">
                截图
            </botton>
        </div>
        <canvas id="myCanvas" width="343" height="200"></canvas>
    </div>
</template>
<script>
export default {
    name:"video",
    data() {
        return {
            imgSrc:''
        };
    },
    methods: {
        //截取当前帧的图片
        cutPicture(){
            let self=this;
            var v = document.querySelector("video");
            let canvas = document.getElementById('myCanvas')
            var ctx = canvas.getContext('2d');                  
            ctx.drawImage(v, 0, 0, 343, 200);
            var oGrayImg = canvas.toDataURL('image/jpeg');
            this.imgSrc = oGrayImg
        },
    }
}
</script>

自动获取视频第一帧

<template>
    <div>
        <video controls style="width:300px;"></video>
        <img :src="imgSrc">
        <div>
            <botton @click="cutPicture">
                截图
            </botton>
        </div>
        <canvas id="myCanvas" width="343" height="200"></canvas>
    </div>
</template>
<script>
export default {
    name:"video",
    data() {
        return {
            imgSrc:''
        };
    },
    methods: {
      getVideo () {
      // 获取上传文件标签
      let filesId = document.getElementById('videoupload')
      // 获取音频标签
      let video = document.getElementById('video')
      this.fileDetail = filesId.files
      let url = this.getFileURL(filesId.files[0])
      if (url) {
        this.isShowVideo = true
        // 给video标签设置src
        video.src = url
      }
      var canvas = document.getElementById('myCanvas') // 获取 canvas 对象
      const ctx = canvas.getContext('2d') // 绘制2d
      video.crossOrigin = 'anonymous' // 解决跨域问题,也就是提示污染资源无法转换视频
      video.currentTime = 1 // 第一帧
      video.oncanplay = () => {
        canvas.width = video.clientWidth // 获取视频宽度
        canvas.height = video.clientHeight // 获取视频高度
        // 利用canvas对象方法绘图
        ctx.drawImage(video, 0, 0, video.clientWidth, video.clientHeight)
        // 转换成base64形式
        var oGrayImg = canvas.toDataURL('image/png') // 截取后的视频封面
        this.videoImg = [oGrayImg]
      }
    },

    getFileURL (file) {
      let getUrl = null
      if (window.createObjectURL !== undefined) {
        getUrl = window.createObjectURL(file)
      } else if (window.URL !== undefined) {
        // window.URL 标准定义
        // mozilla(firefox)
        // 获取一个http格式的url路径,这个时候就可以设置<img>中的显示
        getUrl = window.URL.createObjectURL(file)
      } else if (window.webkitURL !== undefined) {
        getUrl = window.webkitURL.createObjectURL(file)
      }
      return getUrl
    },
}
</script>

相关文章

网友评论

      本文标题:利用Input 实现视频上传及获取视频第一帧-视频系列(1)

      本文链接:https://www.haomeiwen.com/subject/uepwrltx.html