如何将网络摄像头数据流式传输到服务器

Howto stream webcam data to a server?

本文关键字:传输 服务器 数据流 摄像头 网络      更新时间:2023-09-26

我正在寻找一种将网络摄像头数据从浏览器流式传输到网络服务器的方法。网络摄像头数据是使用 getUserMedia 获取的。一个常见的选择似乎是使用画布和计时器将屏幕截图发送到服务器,但我想要一个适当的视频流。WEBRTC似乎是另一种选择,但这可能有点过头了,而且没有太多的软件在服务器上运行(即非浏览器),使用WEBRTC,并具有Python绑定。

也许我错过了更简单的索普林。例如,是否可以使用 Websocket 流式传输视频流?

'use strict';

var errorCallback = function(e) {
    console.log('Rejected!', e);
};
var successCallback = function(stream) {
    console.log('Got Video.');
    var video = document.querySelector('video');
    video.src = window.URL.createObjectURL(stream);
    // ???
    // Stream data to server  
    video.play();
};
navigator.getUserMedia = navigator.getUserMedia ||
                         navigator.webkitGetUserMedia ||
                         navigator.mozGetUserMedia ||
                         navigator.msGetUserMedia;

var hdConstraints = {
    video: {
        mandatory: {
            minWidth: 1280,
            minHeight: 720,
        }
    },
    audio: false,
};
if (navigator.getUserMedia) {
    navigator.getUserMedia(hdConstraints, successCallback, errorCallback);
}
else {
    console.log('No getUserMedia available.');
}

看起来目前最好的解决方案确实是使用画布,定期从网络摄像头创建图像并通过 websocket 发送。