【树莓派】通过HTTP服务器实时传输视频流


前言

树莓派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的语法点----就是那个奇怪的@

可以使用指令运行程序

二、网页端网址展示

你可以在浏览器中访问 http://<树莓派的IP地址>:5000/video_feed 来查看视频流。
注意树莓派的IP不需要用括号!!!!

Flask 默认端口设置为 5000 是因为这是 Flask 的默认配置

注意散热QAQ,因为忙于展示,就不散热啦。中秋快乐~~

在这里插入图片描述
运行结果展示,分辨率还行
在这里插入图片描述


总结

祝大家中秋快乐~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值