//.....................EXAMPLE01.......................................................
<body>
<video id='video' poster>
<source src='Chrome_starts_fast_hammock.mp4'/>
<source src='Chrome_starts_fast_hammock.ogg'/>
</video>
<canvas id='canvas' width='720' height='405'>
Canvas not supported
</canvas>
<script src='../../shared/js/requestNextAnimationFrame.js'></script>
<script src='example.js'></script>
</body>
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d'),
video = document.getElementById('video');
function animate() {
if (!video.ended) {
context.drawImage(video, 0, 0, canvas.width, canvas.height);
window.requestNextAnimationFrame(animate);
}
}
video.onload = function (e) {
video.play();
window.requestNextAnimationFrame(animate);
};
//.....................EXAMPLE02.......................................................
var canvas = document.getElementById('canvas'),
offscreenCanvas = document.createElement('canvas'),
offscreenContext = offscreenCanvas.getContext('2d'),
context = canvas.getContext('2d'),
video = document.getElementById('video'),
controlButton = document.getElementById('controlButton'),
flipCheckbox = document.getElementById('flipCheckbox'),
colorCheckbox = document.getElementById('colorCheckbox'),
imageData,
poster = new Image();
// Functions.....................................................
function removeColor() {
var data,
width,
average;
imageData = offscreenContext.getImageData(0, 0,
offscreenCanvas.width, offscreenCanvas.height);
data = imageData.data;
width = data.width;
for (i=0; i < data.length-4; i += 4) {
average = (data[i] + data[i+1] + data[i+2]) / 3;
data[i] = average;
data[i+1] = average;
data[i+2] = average;
}
offscreenContext.putImageData(imageData, 0, 0);
}
function drawFlipped() {
context.save();
context.translate(canvas.width/2, canvas.height/2);
context.rotate(Math.PI);
context.translate(-canvas.width/2, -canvas.height/2);
context.drawImage(offscreenCanvas, 0, 0);
context.restore();
}
function nextVideoFrame() {
if (video.ended) {
controlButton.value = 'Play';
}
else {
offscreenContext.drawImage(video, 0, 0);
if (!colorCheckbox.checked)
removeColor();
if (flipCheckbox.checked)
drawFlipped();
else
context.drawImage(offscreenCanvas, 0, 0);
requestNextAnimationFrame(nextVideoFrame);
}
}
function startPlaying() {
requestNextAnimationFrame(nextVideoFrame);
video.play();
}
function stopPlaying() {
video.pause();
}
// Event handlers...............................................
controlButton.onclick = function(e) {
if (controlButton.value === 'Play') {
startPlaying();
controlButton.value = 'Pause';
}
else {
stopPlaying();
controlButton.value = 'Play';
}
}
poster.onload = function() {
context.drawImage(poster, 0, 0);
};
// Initialization................................................
poster.src = '../../shared/images/smurfposter.png';
offscreenCanvas.width = canvas.width;
offscreenCanvas.height = canvas.height;视频处理22
原创
©著作权归作者所有:来自51CTO博客作者生而为人我很遗憾的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:放大镜21
下一篇:简单动画-调用-帧23
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
22 VueComponent 响应式处理
这是最近的碰到的那个 和响应式相关的问题引起的一系列的文章主要记录的是 vue 的相关实现机制呵呵 理解本文需要 vue 的使用基础, js 的使用基础。
vue js observable 测试用例 Vue -
java项目视频22套
java项目视频22套如图所示:获取方式:关注微信公众号:javafirst发送“Java项目视频”即可获取链接
java 项目视频 教学视频 java项目 微信公众号 -
Oracle RAC架构揭秘:高可用的核心机制
如InnoDB Cluster)适合预算有限场景。
#oracle #架构 #数据库 共享存储 缓存
















