vue获取视频第一帧

在实际开发中,比如我们用到了视频,后台只是给我们返回一个地址,我们这边要如何把视频的第一帧显示出来呢

<template>
  <div  style="margin-top:50px">
      <!-- <video :src="videoSrc" id="videoPlay" height="414" width="720" style="margin-top:50px" controls="controls">您的浏览器不支持 video 视屏播放。</video> -->
      <video :src="videoSrc" controls style="width:1000px;"></video>
        <div>
            <img :src="imgSrc">
        </div>
        <div>
            <button @click="cutPicture">
                截图
            </button>
        </div>
        <canvas id="myCanvas" width="343" height="200"></canvas>
  </div>
</template>

<script>
export default {
    data() {
        return {
            videoSrc:'https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm',
            imgSrc:''
        }
    },
    methods: {
        //截取当前帧的图片
        cutPicture(){
            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>

这边如果我们是使用外部的url就会有这个报错

在这里插入图片描述
现象:在使用canvas的toDataURL()方法时,控制台有时会报错:Uncaught DOMException: Failed to execute ‘toDataURL’ on ‘HTMLCanvasElement’: Tainted canvases may not be exported.

原因:这是由于之前由drawImage()向canvas导入的图片跨域而导致的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值