我使用HTML5画布和DrawImage函数来显示低速率视频。 tnt提出了很好的建议,让这个项目开始实施:Trying to use Canvas and DrawImage to display low-rate video at 90 degrees
虽然通过使用onload功能在加载时知道摄像机和角度时tnt的解决方案工作正常,但我需要能够在多个摄像机之间关闭和打开视频并更改其他参数。要处理这个问题,需要一些单独的函数,但是我无法先在摄像机上执行setInterval,然后将不断变化的图像传递给DrawImage。 'cam_1.jpg'是以下示例中的视频。下面的body onload中显示的函数也必须在运行时由其他例程调用。任何建议将不胜感激。
var cam = null;
var c = null;
var ctx = null;
var ra = 0;
function init() {
cam = new Image;
c = document.getElementsByTagName('canvas')[0];
ctx = c.getContext('2d');
}
function draw(cam) {
ctx.save();
ctx.clearRect( 0, 0, 240, 320 );
ctx.translate( 240, 0);
ctx.rotate(1.57);
ctx.drawImage(cam, 0, 0 );
ctx.restore();
}
function inter() {
setInterval(function(){cam.src = 'cam_1.jpg?uniq='+Math.random();},500);
}
</script></head><body onload = "init(), draw(cam), inter()" >
谢谢。
答案 0 :(得分:1)
我建议你使用一个对象数组;像这样的东西:
var cams = []; // an array to hold you cams!
function addcam() {
this.image = new Image;
this.setting1 = 0;
this.settingn = 0;
}
cams[1] = addcam();
cams[1].image.src = "cam1.jpg";
cams[1].setting1 = 2;
setInterval(function(){cam.src = '+cams[1].image.src+'?uniq='+Math.random();},500);
答案 1 :(得分:1)
@tnt,您是否建议如下?谢谢你:
var cams = []; // an array to hold you cams!
function addcam() {
this.image = new Image;
this.setting1 = 0;
this.settingn = 0;
}
function draw(camnum){
cams[1] = addcam();
cams[1].image.src = "cam_1.jpg";
cams[1].setting1 = 2;
cam = new Image;
c = document.getElementsByTagName('canvas')[0];
ctx = c.getContext('2d');
}
function inter() {
setInterval(function(){'cam.src = ' +cams[1].image.src+ '?uniq='+Math.random();},500);
}
function draw(cam) {
ctx.save();
ctx.clearRect( 0, 0, 240, 320 );
ctx.translate( 240, 0);
ctx.rotate( 1.57);
ctx.drawImage(this, 0, 0 );
ctx.restore();
}
</script></head><body onload = "draw(cam), inter()" >