Javascript видео холст - PullRequest
       9

Javascript видео холст

2 голосов
/ 06 июля 2010

Я тестирую холст и видео, и я прочитал множество примеров, но у меня возникает небольшая проблема, когда я нажимаю кнопку воспроизведения на видео, холст не воспроизводит видео, а просто показывает снимок.

Не могу понять, почему он не играет одновременно. Вот мой код в 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>

1 Ответ

1 голос
/ 15 июля 2010

Вы должны непрерывно вызывать 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;
}

}); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...