django StreamingHttpResponse picamera运行但不渲染流,请告知



我希望我能找到你。

我真的在为个人项目而苦苦挣扎,如果有人能让我直截了当,我将不胜感激。

我希望从 django 中的摄像机流式传输视频。我看到了一些 cv2 实现,在 cv2 上遇到了一些麻烦,并决定尝试另一种路由。这里的一些代码是从 picamera 文档中提取的,有些是从我遇到的一些 cv2 实现中提取的。

当我点击 django url 时,相机开始流式传输,但网页是灰色的,中间有一个小框,没有可见的流。

python3 -m django --version: 3.0.6

下面发布的完整代码。 这就是我所看到的

有人能为我指出正确的方向吗?

谢谢 达伦

from django.shortcuts import render
from django.http import HttpResponse
from django.http import StreamingHttpResponse
from doron.models import Storage
from django.views import generic
import picamera
import io
from threading import Condition
from time import sleep
class StreamingOutput(object):
def __init__(self):
self.frame = None
self.buffer = io.BytesIO()
self.condition = Condition()
def write(self, buf):
if buf.startswith(b'xffxd8'):
# New frame, copy the existing buffer's content and notify all
# clients it's available
self.buffer.truncate()
with self.condition:
self.frame = self.buffer.getvalue()
self.condition.notify_all()
self.buffer.seek(0)
return self.buffer.write(buf)
def livefe(request):
def cam():
with picamera.PiCamera(resolution='640x480', framerate=24) as camera:
output = StreamingOutput()
camera.start_recording(output, format='mjpeg')
try:
while True:
with output.condition:
output.condition.wait()
frame = output.frame
yield(b'--framern'
b'Content-Type: image/jpegrnrn' + frame + b'rnrn')
finally:
camera.stop_recording()
try:
return StreamingHttpResponse(cam(), content_type="multipart/x-mixed-replace;boundary=frame")
except:  
pass

我现在确实在研究同一个主题,似乎我们在网上使用了几乎相同的模板。我遇到了这个问题,如果我记得不错的话,我通过在录制开始和流媒体开始之间添加一点睡眠来解决它。

最后,我将整个init块移动到另一个函数中,然后我可以使用页面上的按钮或其他条件调用该函数(稍后我将在第一次客户端登录时打开它,在最后一次客户端注销时将其关闭(:

camera = picamera.PiCamera(resolution='640x480', framerate=12)
output = StreamingOutput()
camera.start_recording(output, format='mjpeg')

希望对您有所帮助。

相关内容

  • 没有找到相关文章

最新更新