+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2020-04-07 09:59     阅读(457)     评论(0)     点赞(7)     收藏(5)


0

1

2

3

4

5

6

7

我正在尝试创建用Django编写的面部检测Web应用程序。该应用程序以这种方式工作。

  1. 用户导航到URL
  2. 相机在客户端计算机上启动
  3. 然后将每帧发送到服务器进行面部检测
  4. 然后,已处理的框架将显示在网页上

我知道我不能使用opencv VideoCapture,因为它只能在服务器端使用。当我在网上阅读时,人们要求我使用javascript(特别是webRTC)在客户端上开始直播。因此,我找到了本教程教程说明了如何使用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>

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

DJANGO views.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实例接口。

让我知道您是否需要更多帮助。

0

1

2

3

4

5

6

7

8



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/313473/7bca797cb1e48cea5d6a/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

7 0
收藏该文
已收藏

评论内容:(最多支持255个字符)