【发布时间】:2017-05-29 20:45:32
【问题描述】:
我制作了多个在 HTML5 画布上运行的视频。成功。 我在浏览器上制作了 node.js websocket 及其客户端。成功。 现在我正在尝试将这些项目结合起来。 这个想法是通过nodejs websocket(服务器)将在画布(admin.html)上播放的视频发送到浏览器客户端(spectactor.html)。我失败了。
请帮忙。这是脚本。当管理员在建立 ws 连接后单击播放列表中的一行时调用 runVid。 runVid 然后调用 draw() 和 sendImage。 sendImage 根本没有触发。怎么了?我也将 sendImage() 放在 draw() 函数中,但这也失败了。
var port = 8080;
var ws = new WebSocket('ws://127.0.0.1:' + port,['soap', 'xmpp']);
ws.binaryType = 'arraybuffer';
function runVid(){
var video = document.getElementById('video');
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var cw = Math.floor(canvas.clientWidth);
var ch = Math.floor(canvas.clientHeight);
canvas.width = cw;
canvas.height = ch;
video.addEventListener('play', function(){
draw(this, context, cw, ch);
sendImage(context, cw, ch);
}, false);
}
function draw(video,canvas,width,height) {
if(video.paused || video.ended) return false;
canvas.drawImage(video,0,0,width,height);
setTimeout(draw,20,video,canvas,width,height);
}
function sendImage(context, width,height){
var imageData = context.getImageData(0, 0, width, height);
var canvasPixelArray = imageData.data;
var canvasPixelLen = canvasPixelArray.length;
for(var j = 0; j<canvasPixelLen;j++){
byteArray[j] = canvasPixelArray[j];
}
ws.send(byteArray.buffer);
console.log("byteArray sent");
}
【问题讨论】:
标签: node.js html5-canvas video-streaming html5-video