本文介绍了javascript视频画布的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在测试画布和视频,我已经阅读了很多例子,但我遇到了一个小问题,当我按下视频画布上的播放按钮不播放视频,以及它只是显示一个快照。
I am testing out canvas and video and I have read up on alot of examples, but I am running into a slight problem when I press the play button on the video canvas doesn't play the video as well it just shows a snapshot.
我不知道为什么它不能同时播放。这是我的javascript代码。
I can not figure out why it doesn't play simultaneously. Here is my code in javascript.
function draw()
{
var ctx3 = document.getElementById('c3');
var ctx1 = document.getElementById('c1');
var conts = ctx3.getContext('2d');
var videos = document.getElementById('video');
var frames = conts.getImageData(0,0,300,300);
videos.addEventListener("play", function ()
{
conts.drawImage(videos, 0, 0, 300, 300);
var l = frames.data.length/4;
for (var i = 0; i<1; i++){
var r = frames.data(i * 4 + 0);
var g = frames.data(i * 4 + 1);
var b = frames.data(i * 4 + 2);
if (g > 100 && r > 100 && b < 43)
frames.data(i * 4 + 3) = 0;
ctx1.putImageData(frames,300,300);
return;
}
});
}
</script>
<body onload="draw()">
<canvas id="c1" width="300" height="300"></canvas>
<canvas id="c2" width="300" height="300" ></canvas>
<canvas id="c3" width="300" height="300"></canvas>
<video id="video" src="https://developer.mozilla.org/samples/video/chroma-key/video.ogv" width=video.width height= video.height controls="true"></video>
</body>
推荐答案
您必须连续调用conts.drawImage
You have to continuously call conts.drawImage
示例: http://jsfiddle.net/Dmy2E/
function draw()
{
var ctx3 = document.getElementById('c3');
var ctx1 = document.getElementById('c1');
var conts = ctx3.getContext('2d');
var videos = document.getElementById('video');
var frames = conts.getImageData(0,0,300,300);
videos.addEventListener("play", function ()
{
conts.drawImage(videos, 0, 0, 300, 300);
setTimeout(arguments.callee, 0);
var l = frames.data.length/4;
for (var i = 0; i<1; i++){
var r = frames.data(i * 4 + 0);
var g = frames.data(i * 4 + 1);
var b = frames.data(i * 4 + 2);
if (g > 100 && r > 100 && b < 43)
frames.data(i * 4 + 3) = 0;
ctx1.putImageData(frames,300,300);
return;
}
});
}
这篇关于javascript视频画布的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!