我希望我能找到你。
我真的在为一个个人项目而苦苦挣扎,如果有人能让我直截了当,我将不胜感激。
我希望从 django 的 picamera 流式传输视频。我看到了一些 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'\xff\xd8'):
# 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'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
finally:
camera.stop_recording()
try:
return StreamingHttpResponse(cam(), content_type="multipart/x-mixed-replace;boundary=frame")
except:
pass