HTML5 Canvas及Video实例

这是HTML5中Canvas技术与Video技术结合的实例。效果图:


以下代码不能运行,只提供学习查看。若想预览该实例请浏览http://html5demos.com/video-canvas

(浏览器支持:只支持Safari, Firefox)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Dizzy</title>
<style>
* { margin: 0;}
body { font-family: helvetica; padding: 10px; }
input { width: 50px; }
/*video, canvas { display: block; }*/
p { margin-top: 20px;}
</style>
</head>
<body>
<video height="360" width="480">
<source src="dizzy.mp4" />
<source src="dizzy.ogv" />
</video><canvas></canvas>
<p>
<input type="button" id="play" value="play">
<span id="position">00:00</span> / <span id="duration"></span>
</p>
var video = document.querySelector('video');
var togglePlay = document.querySelector('#play');
var position = document.querySelector('#position');
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
addEvent(togglePlay, 'click', function () {
video.playbackRate = 0.5;
if (video.paused) {
if (video.ended) video.currentTime = 0;
video.play();
this.value = "pause";
} else {
video.pause();
this.value = "play";
}
});
addEvent(video, 'timeupdate', function () {
position.innerHTML = asTime(this.currentTime);
// ctx.restore();
ctx.drawImage(video, 0, 0, video.width, video.height, 0, 0, canvas.width, canvas.height);
});
addEvent(video, 'ended', function () {
togglePlay.value = "play";
});
addEvent(video, 'canplay', function () {
video.muted = true;
document.querySelector('#duration').innerHTML = asTime(this.duration);
startCanvas();
});
function startCanvas() {
canvas.setAttribute('height', Math.floor(video.height));
canvas.setAttribute('width', Math.floor(video.width));
ctx.translate(canvas.width/2, canvas.height/2);
ctx.scale(-1, 1);
ctx.translate(-canvas.width/2, -canvas.height/2);
ctx.drawImage(video, 0, 0, video.width, video.height, 0, 0, canvas.width, canvas.height);
// var mirror = canvas.height * 0.6;
// var grad = ctx.createLinearGradient(0, 0, 0, mirror);
// grad.addColorStop(0, 'rgba(0, 0, 0, 0.5)');
// grad.addColorStop(1, 'rgba(0, 0, 0, 1)');
// ctx.fillStyle = grad;
// ctx.rect(0, 0, canvas.width, mirror);
// ctx.fill();
// ctx.save();
}
function asTime(t) {
t = Math.round(t);
var s = t % 60;
var m = Math.round(t / 60);
return two(m) + ':' + two(s);
}
function two(s) {
s += "";
if (s.length < 2) s = "0" + s;
return s;
}
</body>
</html>

时间: 2024-10-02 03:26:30

HTML5 Canvas及Video实例的相关文章

HTML5 Canvas模拟loading实例

这个例子是html5 Canvas模拟网页loading加载实例.效果图如下:

基于html5 canvas实现漫天飞雪效果实例

 本文实例讲述了基于html5 canvas实现漫天飞雪效果的方法,运行该实例可以看到很棒的下雪效果.如下图所示: 主要代码如下: 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/T

JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例_javascript技巧

本文实例讲述了JavaScript+html5 canvas绘制缤纷多彩的三角形效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE HTML> <html> <head> <title>demo</title> <style type="text/css"> body { margin:0; padding:0; } #canvas { width:500px; heig

JavaScript+html5 canvas绘制渐变区域完整实例_javascript技巧

本文实例讲述了JavaScript+html5 canvas绘制渐变区域的方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head> <title>demo</title> <style type="text/css"> #canvas { border:3px solid gray; } </style> </head&

JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例_javascript技巧

本文实例讲述了JavaScript+html5 canvas绘制的圆弧荡秋千效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head> <title>demo</title> <style type="text/css"> #canvas { margin:50px; border:5px solid gray; box-shadow:0p

JavaScript+html5 canvas制作的百花齐放效果完整实例_javascript技巧

本文实例讲述了JavaScript+html5 canvas制作的百花齐放效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head> <title>demo</title> <style type="text/css"> body { margin:0; padding:0; } #canvas { border:5px solid gra

浅析HTML5 Canvas入门教程及实例

什么是 Canvas? HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形. 你可以通过多种方法使用Canva绘制路径,盒.圆.字符以及添加图像. 浏览器支持 Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 支持 <canvas> 元素. 注意: Internet Explorer 8 及更早 IE

JavaScript+html5 canvas制作的圆中圆效果实例_javascript技巧

本文实例讲述了JavaScript+html5 canvas制作的圆中圆效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head> <title>demo</title> <style type="text/css"> #canvas { background:#F2F2F2; height:500px; height:500px; mar

Html5 Canvas画布以及绘制矩形实例

Canvas 标签用来建立一个矩形画布区域,利用 Canvas 提供的 JS 方法来绘制图形,可以对画布的每一个像素进行控制,就类似但不局限于 PHP 的 GD 库. 下面我将分多篇文章系统介绍 Canvas 标签的使用方法,虽然 Canvas 标签实际使用的还是非常少,但在 Html5 普及之后必然是一大趋势,我们先下手为强. 结构 Canvas在HTML页面中是一个"<canvas></canvas>"标签,显示为一个矩形区域.矩形区域的左上角为坐标原点(0