Fixing MJPEG streaming in Werkzeug by taking advantage of `direct_passthrough` (#2277)
parent
f5fc4cd97f
commit
b2b1804f5e
|
@ -89,8 +89,6 @@ class Camera(Entity):
|
|||
def mjpeg_stream(self, response):
|
||||
"""Generate an HTTP MJPEG stream from camera images."""
|
||||
import eventlet
|
||||
response.content_type = ('multipart/x-mixed-replace; '
|
||||
'boundary=--jpegboundary')
|
||||
|
||||
def stream():
|
||||
"""Stream images as mjpeg stream."""
|
||||
|
@ -112,9 +110,11 @@ class Camera(Entity):
|
|||
except GeneratorExit:
|
||||
pass
|
||||
|
||||
response.response = stream()
|
||||
|
||||
return response
|
||||
return response(
|
||||
stream(),
|
||||
content_type=('multipart/x-mixed-replace; '
|
||||
'boundary=--jpegboundary')
|
||||
)
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
|
@ -196,4 +196,4 @@ class CameraMjpegStream(CameraView):
|
|||
|
||||
def handle(self, camera):
|
||||
"""Serve camera image."""
|
||||
return camera.mjpeg_stream(self.Response())
|
||||
return camera.mjpeg_stream(self.Response)
|
||||
|
|
|
@ -70,9 +70,11 @@ class MjpegCamera(Camera):
|
|||
def mjpeg_stream(self, response):
|
||||
"""Generate an HTTP MJPEG stream from the camera."""
|
||||
stream = self.camera_stream()
|
||||
response.mimetype = stream.headers[CONTENT_TYPE_HEADER]
|
||||
response.response = stream.iter_content(chunk_size=1024)
|
||||
return response
|
||||
return response(
|
||||
stream.iter_content(chunk_size=1024),
|
||||
mimetype=stream.headers[CONTENT_TYPE_HEADER],
|
||||
direct_passthrough=True
|
||||
)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
|
|
Loading…
Reference in New Issue