为了账号安全,请及时绑定邮箱和手机立即绑定

createPattern 设置video填充 搞不起来?


            //设置video填充
            var video = document.createElement("video");
            video.src = "movie.ogg";
            video.autoplay = "autoplay";
            var pattern= context.createPattern(video, "repeat");
            context.fillStyle = pattern;
            context.fillRect(0, 0, windowWidth, windowHeight);


正在回答

4 回答

var context = canvas.getContext('2d');
var video = document.createElement('video');
video.src = '吔屎吧梁非凡_x264压制.mp4';
video.preload = 'preload';
video.autoplay = 'autoplay';
video.height = context.canvas.height;
video.width = context.canvas.width;

setInterval(function (){
  var pattern = context.createPattern(video, 'no-repeat');
   context.fillStyle = pattern;
   context.fillRect(0, 0, context.canvas.width, context.canvas.height);
   pattern = null;

   //drowStar...这里执行其他绘画步骤

},100);

测试可用,setInterval的时间间隔尽量调大,不然电脑风扇会狂飙...

0 回复 有任何疑惑可以回复我~

对不起,之前的理解有点问题,createPattern可以接受第一个参数是HTMLVideoElement也就是你的

<video src="movie.ogg"></video>

对象,为何不显示视频,是因为你的程序只绘制了一次画板,当然不会有动态效果。

至于video对象记录的当前图像帧数据,createPattern是如何获取的,已不在这个问题的范围内了。可以查看html5 video元素实现,我也是一知半解,可以问问老师。

1 回复 有任何疑惑可以回复我~

这样写肯定不行的,我觉得第一个参数应该是一帧图像的数据,查了下文档

createPattern 第一个参数是CanvasImageSource数据类型 

typeof (HTMLImageElement or HTMLVideoElement or HTMLCanvasElement)CanvasImageSource;

具体HTMLVideoElement数据类型我也没有了解。

把你的代码这样改可行:

//设置video填充
var video = document.createElement("video");
video.src = "movie.ogg";
video.autoplay = "autoplay";
setInterval(function(){
    var pattern= context.createPattern(video, "no-repeat");
    context.fillStyle = pattern;
    context.fillRect(0, 0, windowWidth, windowHeight);
    },
    16);


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

createPattern 设置video填充 搞不起来?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信