- 前言
- 一、树莓派端的代码
- 二、网页端网址展示
- 总结
前言
树莓派3B+的通过HTTP服务器实时传输MJPEG视频流
一、树莓派端的代码
注意在先安装完库
pip install Flask picamera
Flask 是一个用 Python 编写的轻量级 web 框架。它主要用于构建 web 应用和 web 服务。Flask 提供了许多功能来简化 web 应用的开发,包括:
-
路由(Routing):Flask 允许你定义 URL 路由,将 HTTP 请求映射到相应的处理函数上。
-
模板渲染(Templating):Flask 使用 Jinja2 模板引擎来生成 HTML 页面,允许你将 Python 数据嵌入到 HTML 模板中,从而动态生成页面内容。
-
请求和响应处理:Flask 提供了简洁的 API 来处理 HTTP 请求和生成响应,包括表单数据、JSON 数据等。
-
会话管理(Session Management):Flask 允许你管理用户会话,存储用户的状态信息。
-
扩展支持(Extensions):Flask 具有许多第三方扩展,可以增加数据库支持、表单验证、文件上传等功能。
Flask 的核心理念是保持简单和灵活,它只提供了最基本的功能,开发者可以根据需要添加更多功能。相较于其他较为全面的框架如 Django,Flask 更加轻量,适合构建小型或中型的 web 应用,并且开发者可以自由选择和集成所需的工具和库。
from flask import Flask, Response
import picamera
import time
# 创建 Flask 应用程序实例
app = Flask(__name__)
def generate_frames():
# 使用 PiCamera 创建摄像头实例
with picamera.PiCamera() as camera:
camera.resolution = (640, 480) # 设置分辨率
camera.framerate = 24 # 设置帧率
time.sleep(2) # 给相机时间来调整曝光和白平衡
while True:
# 生成 MJPEG 视频流
with camera.capture_continuous(format='bgr', use_video_port=True) as stream:
for frame in stream:
# 注意:stream 生成的是 numpy 数组格式的图像
# 通过 MJPEG 格式输出
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
time.sleep(1 / 24) # 控制帧率
@app.route('/video_feed')
def video_feed():
# 使用 Response 对象将生成的帧流作为响应返回
return Response(generate_frames(),
mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=True)
这里需要注意一点python的语法点----就是那个奇怪的@
- 装饰器 相关视频连接【Python三分钟】什么是装饰器?
虽然看了 还是半知半解,但是这个视频是我找的的最简单的。
可以使用指令运行程序
二、网页端网址展示
你可以在浏览器中访问 http://<树莓派的IP地址>:5000/video_feed
来查看视频流。
注意树莓派的IP不需要用括号!!!!
Flask 默认端口设置为 5000 是因为这是 Flask 的默认配置
注意散热QAQ,因为忙于展示,就不散热啦。中秋快乐~~
运行结果展示,分辨率还行
总结
祝大家中秋快乐~