使用video视频帧作为图片源绘制canvas

使用video视频帧作为图片源绘制canvas

1、在html页面加入canvas元素

<canvas id="canvas"></canvas>

2、在html页面中加入video元素及视频源

<video id="video" loop crossOrigin="anonymous" playsinline controls="" muted style="display: none;">
	<source src="videos/animate2.mp4" type='video/mp4'>
</video>

3、编写JS脚本绘制canvas画布

let width, height, rate;
let video = document.getElementById( 'video' );
let canvas=document.getElementById("canvas");
let ctx = canvas.getContext("2d");
 /*
  * oncanplay:视频可以播放事件
  * 此时readyState等于4(HAVE_ENOUGH_DATA)
  * 注:readyState等于0(HAVE_NOTHING)时videoWidth、videoHeight为0
  */
video.oncanplay = (event) => {
	// videoWidht、videoHeight视频原始宽度、高度(单位:px)
	width = video.videoWidth;
	height = video.videoHeight;
	
	rate = height/width;
	canvas.width = 600;
	canvas.height = 600*rate;
	video.play(); // 播放视频
	
	// 判断HTMLVideoElement是否支持requestVideoFrameCallback()方法
	if ( 'requestVideoFrameCallback' in video ) {
		// 下此视频帧呈现时触发回调
		video.requestVideoFrameCallback( updateVideo );
	}
}
    	
/*
 * 根据当前视频帧绘制图片
 */
function updateVideo(){
    ctx.drawImage(video, 0, 0, 600, 600*rate);// 使用视频帧(当前帧)绘制canvas
    video.requestVideoFrameCallback( updateVideo );
 } 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值