Miguel Grinberg 用 Python 编写了一个优秀的视频流教程,它可以连续发送 JPEG 帧。在这里查看他的博客文章:
http://blog.miguelgrinberg.com/post/video-streaming-with-flask 1
可以快速查看这些 JPEG 中的每一个,然后进行广播。[考虑到所需的延迟]
就获取输入视频源而言,您可以使用 OPENCV 连接网络摄像头。OpenCV 使用 VideoCapture 以字节形式返回原始图像。这些字节需要编码为 JPEG 并与 Miguel 的代码接口。
import cv2
class VideoCamera(object):
def __init__(self):
# Using OpenCV to capture from device
self.video = cv2.VideoCapture(0)
def __del__(self):
self.video.release()
def get_frame(self):
success, image = self.video.read()
# We are using Motion JPEG, but OpenCV defaults to capture raw images,
# so we must encode it into JPEG in order to correctly display the
# video stream.
ret, jpeg = cv2.imencode('.jpg', image)
return jpeg.tobytes()
这种方法将帮助您满足所有必需的功能:
- 无需互联网
- 可调延迟 - 轻松控制延迟和您想要在每一帧上执行的处理
- 高品质
- 按需记录 - 根据需要存储捕获的帧
- 具有记录返回功能,只需保存之前的 24*x 帧(24fps 流)