我正在尝试创建用Django编写的面部检测Web应用程序。该应用程序以这种方式工作。
我知道我不能使用opencv VideoCapture,因为它只能在服务器端使用。当我在网上阅读时,人们要求我使用javascript(尤其是webRTC)在客户端上开始直播。因此,我找到了这个 tutorial ,它说明了如何使用javascript在客户端计算机上启动网络摄像头。
现在我的问题是如何将客户端计算机上的javascript中的每个帧发送到服务器端的opencv python?
所有这些都应该实时发生。因此,我无法保存直播视频,然后在保存的视频上运行python代码。
一些网站要求我使用AJAX将数据发送到服务器端,但是我不确定如何确定要在javascript代码中发送的每个帧的位置。
到目前为止,这是我的代码
<!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
打印console.log
的内容,但这没有帮助。
def index(request):
return render(request, 'cwrtc/index.html', {})
我使用的是Django通道,因为我想从客户端发送和接收数据可能需要使用Web套接字。而且我之所以使用python,是因为我计划向应用程序添加更多的功能,而使用python进行编码将比其他任何语言都容易。
是否可以将视频流从javascript发送到python?
预先感谢
答案 0 :(得分:2)
是的,您可以将视频从javascript发送到服务器上的python,但是,不能使用Ajax或Web套接字发送帧。
这是您可以执行的操作。
让我知道是否需要更多帮助。
答案 1 :(得分:0)
我认为这不是通过服务器流式传输视频的好方法。为什么当webrtc直接提供p2p连接时甚至想要将视频帧发送到服务器。所有您需要一个套接字库来管理用户并连接它们。您可以将随机生成的roo_id传递给django通道以创建房间。我会建议您擅长在nodejs上使用socket.io库,因为使用webrtc的Django通道上的资源和文档很少。