使用 django 通道将 webRTC 视频流发送到服务器

2024-02-29

我正在尝试创建一个用 django 编写的人脸检测 Web 应用程序。该应用程序是这样工作的。

  1. 用户导航到该 url
  2. 相机在客户端计算机上启动
  3. 然后将每一帧发送到服务器进行人脸检测
  4. 然后将处理后的帧显示在网页上

我知道我无法使用 opencv VideoCapture,因为它只能在服务器端工作。当我在网上阅读时,人们要求我使用 javascript,特别是 webRTC 在客户端启动直播。所以我找到了这个tutorial https://www.kirupa.com/html5/accessing_your_webcam_in_html5.htm它解释了如何使用 javascript 在客户端计算机上启动网络摄像头。

现在我的问题是如何将客户端计算机上的 javascript 中的每个帧发送到服务器端的 opencv python ?

所有这一切都应该实时发生。所以我无法保存实时视频,然后在保存的视频上运行 python 代码。

有些网站要求我使用 AJAX 将数据发送到服务器端,但我不确定如何定位要在 javascript 代码中发送的每个帧。

这是我到目前为止的代码

通过 webRTC 进行客户端摄像头访问

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta content="stuff, to, help, search, engines, not" name="keywords">
  <meta content="What this page is about." name="description">
  <meta content="Display Webcam Stream" name="title">
  <title>Display Webcam Stream</title>

  <style>
    #container {
      margin: 0px auto;
      width: 500px;
      height: 375px;
      border: 10px #333 solid;
    }

    #videoElement {
      width: 500px;
      height: 375px;
      background-color: #666;
    }
  </style>
</head>

<body>
  <div id="container">
    <video autoplay="true" id="videoElement">

    </video>
  </div>
  <script>
    var video = document.querySelector("#videoElement");

    if (navigator.mediaDevices.getUserMedia) {
      navigator.mediaDevices.getUserMedia({
          video: true
        })
        .then(function(stream) {
          video.srcObject = stream;
          // myJson = JSON.stringify(stream)
        })
        .catch(function(err0r) {
          console.log("Something went wrong!");
        });
    }

    console.log(video)
  </script>
</body>

</html>

在这段代码中,我如何从网络摄像头访问每个帧。我试图打印的内容video with console.log但这没有帮助。

DJANGO 视图.py

def index(request):
    return render(request, 'cwrtc/index.html', {})

我使用 django 通道是因为我想,要从客户端发送和接收数据,我可能必须使用网络套接字。我使用 python 是因为我计划向应用程序添加更多功能,使用 python 编码比任何其他语言都更容易。

是否可以将视频流从 javascript 发送到 python?

提前致谢


是的,您可以将视频从 javascript 发送到服务器上的 python,但是,您不能使用 Ajax 或 Web 套接字发送帧。

您可以这样做。

  1. 使用 javascript 在客户端创建 WebRTC 会话
  2. 使用本机代码在服务器端运行 webrtc。
  3. 现在通过交换 SDP 在客户端和服务器之间创建 p2p 会话。请注意,您需要在服务器端安装视频捕获设备,否则将不会有视频会话。如果没有,您可以在服务器端使用假视频捕获器。
  4. 然后,您可以将 python 代码与服务器上运行的 webrtc 实例连接起来。

如果您需要更多帮助,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 django 通道将 webRTC 视频流发送到服务器 的相关文章

随机推荐