【问题标题】:is there any way to send webrtc frame to python script?有没有办法将 webrtc 帧发送到 python 脚本?
【发布时间】:2021-09-07 04:24:26
【问题描述】:

我创建了第一个显示客户端网络摄像头帧的网络应用程序(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 模型。
有什么建议吗?

【问题讨论】:

  • 您可以将localStream存储到本地视频文件中,并使用python将其传输到机器上。或者创建python webrtc客户端github.com/aiortc/aiortc

标签: javascript python django webrtc


【解决方案1】:

webrtc 是点对点连接,因此客户端可以连接到最直接的路由,没有服务器干扰(当需要客户端-服务器连接时,webrtc 不如套接字有用或 gRPC)。因此,如果您想将数据从一个对等点重定向到 ML 模型,您应该将其作为另一个对等点直接连接到 ML 模型。 为此,一种方法是为您的 ML 模型控制器创建一个 Python 原生 webrtc 客户端,在这种情况下,您可能会发现 this GitHub repository 很有用。

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

我们仍然有旧的和久经考验的套接字连接 (django channels) 或更新的客户端服务器选项,如 gRPC 流。

【讨论】:

  • 非常感谢您的回答。我会试试这个解决方案
猜你喜欢
  • 2020-01-08
  • 2020-10-22
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 2017-02-08
相关资源
最近更新 更多