Есть ли способ отправить кадр webrtc в скрипт python?
Я создал первое веб-приложение (python и django), которое показывает кадры с веб-камеры клиента
.
Это мой video.js
'use strict';
// On this codelab, you will be streaming only video (video: true).
const mediaStreamConstraints = {
video: true,
};
// Video element where stream will be placed.
const localVideo = document.querySelector('video');
// Local stream that will be reproduced on the video.
let localStream;
// Handles success by adding the MediaStream to the video element.
function gotLocalMediaStream(mediaStream) {
localStream = mediaStream;
localVideo.srcObject = mediaStream;
}
// Handles error by logging a message to the console with the error message.
function handleLocalMediaStreamError(error) {
console.log('navigator.getUserMedia error: ', error);
}
// Initializes media stream.
navigator.mediaDevices.getUserMedia(mediaStreamConstraints)
.then(gotLocalMediaStream).catch(handleLocalMediaStreamError);
Однако я хочу использовать кадр с веб-камеры клиента в качестве входных данных для моего скрипта машинного обучения (файл python .py).
В локальной среде это легко сделать с помощью opencv и numpy.
Но в веб я не могу передать кадры в ML модель.
Есть предложения?
webrtc - это одноранговое соединение, поэтому клиенты могут быть подключены по самому прямому маршруту, без вмешательства сервера (когда необходимо клиент-серверное соединение, webrtc не так полезен, как сокеты или gRPC). поэтому если вы хотите перенаправить данные от одного пира к ML модели, вы должны подключить его напрямую к ML модели как другой пир. Для этого, одним из способов будет создание python native webrtc клиента для вашего контроллера ML модели, в этом случае, вы можете найти этот GitHub репозиторий полезным.
Другим способом для соединения в реальном времени был бы прокси-контроллер, который использует старое доброе UDP-сокетное соединение или gRPC-поток между вашим webrtc-контроллером в браузере и ML-контроллером в службе обработки
у нас все еще есть старое и проверенное в боях сокетное соединение (django channels) или более новые варианты cilent-сервера, такие как gRPC streaming.