gpt4 book ai didi

javascript - 使用 django channel 将 webRTC 视频流发送到服务器

转载 作者:行者123 更新时间:2023-11-29 18:46:09 26 4
gpt4 key购买 nike

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

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

我知道我不能使用 opencv VideoCapture,因为它只能在服务器端工作。当我在网上阅读时,人们要求我使用 javascript,特别是 webRTC 在客户端开始直播。所以我找到了这个 tutorial 解释了如何使用 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>

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

DJANGO View .py

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

我正在使用 Django channel ,因为我想,要从客户端发送和接收数据,我可能必须使用 Web 套接字。我使用 python 是因为我计划向应用程序添加更多功能,与使用其他任何语言相比,使用 python 编写代码更容易。

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

提前致谢

最佳答案

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

这就是您可以做到的。

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

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

关于javascript - 使用 django channel 将 webRTC 视频流发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53813696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com