有没有办法将 webrtc 帧发送到 python 脚本?

is there any way to send webrtc frame to python script?

我创建了第一个显示客户端网络摄像头帧的网络应用程序(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 模型。 为此,一种方法是为您的 ML 模型控制器创建一个 python 本机 webrtc 客户端,在这种情况下,您可能会发现 this GitHub repository 有用。

另一种实时连接方式是代理控制器,它有利于 旧式 UDP 套接字连接或浏览器中 webrtc 控制器之间的 gRPC 流式传输和处理服务中的 ML 控制器

我们仍然拥有经过实战验证的旧式套接字连接 (django channels) 或更新的客户端服务器选项,例如 gRPC 流。