Есть ли способ отправить кадр 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.

Вернуться на верх