上传视频用canvas绘制获取封面

问题描述

上传视频用canvas绘制获取封面,使用toDataURL()转base64报错:dynamic.vue?8ee6:212 Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

问题出现的环境背景及自己尝试过哪些方法

百度了很多都说是跨域问题,尝试加了
video.crossOrigin = 'anonymous'

相关代码

粘贴代码文本(请勿用截图)

this.captureImage(图片url地址)
captureImage(url) {
    let _this = this
    this.$nextTick(()=>{
        let video = _this.$refs.upvideo;

        let source = document.createElement("source");
        source.src = url;
        source.type = "video/mp4";
        video.appendChild(source);

        let canvas = _this.$refs.mycanvas;
        video.oncanplay = () =>{

            setTimeout(() => {
                canvas.width = "320";
                canvas.height = "320";
                canvas.getContext('2d').drawImage(video,0,0,canvas.width,canvas.height);
                let imgsrc = canvas.toDataURL("image/png");
            }, 1000);

        }

    })
    },

你期待的结果是什么?实际看到的错误信息又是什么?

想实现上传视频保存封面图片

阅读 2.1k
1 个回答

上传视频?上传的话,是本地文件,不存在跨域问题。

crossOrigin 这个需要服务端先支持,然后才可以使用。如果是服务端后来支持过了,那么需要清除一下缓存。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题