MaixCAM MaixPy 视频流 JPEG 推流 / 发送图片到服务器
2024-05-20
更新历史
日期 | 版本 | 作者 | 更新内容 |
---|---|---|---|
2024-05-20 | 1.0.1 | lxowalle | 更新JPEG-HTTP用法 |
2024-04-03 | 1.0.0 | neucrack | 初版文档 |
一、简介#
有时需要将图像发送到服务器,或者将摄像头的视频推送到服务器,这里提供两种方法:
- 一个最简单的方法,即压缩成
JPEG
图片,然后一张一张地发送到服务器。注意,这是一种最简单的方法,不算很正规的视频推流方法,也不适合高分辨率高帧率的视频流,因为这只是一张一张发送图片,如果要高效推送视频流,请使用后文的RTSP
或者RTMP
模块。 - 建立一个HTTP服务器, 让PC端可以通过浏览器直接访问
二、作为客户端推流的方法#
可以看到,先将图片转换成了 JPEG
格式,然后将 JPEG
图片的二进制数据通过TCP
发送到服务器。
三、作为服务器推流的方法#
步骤:
导入image、camera和http模块
初始化摄像头
初始化Stream对象
http.JpegStreamer()
用来创建一个JpegStreamer
对象,这个对象将会启动一个http服务器
,用来向客户端发布jpeg
图像流stream.start()
用来启动http服务器
自定义html样式(可选)
html = xxx
是html
代码,可以用来定制自己的网页风格。注意核心代码是<img src="/stream" alt="Stream">
,一定不要漏了这行代码。stream.set_html(html)
用来设置自定义的html
代码,这一步是可选的。默认浏览地址是http://设备的ip:8000
。
从摄像头获取图片并推流
img = cam.read()
从摄像头获取一张图像,当初始化的方式为cam = camera.Camera(320, 240)
时,img
对象是一张分辨率为320x240的RGB图。jpg = img.to_jpeg()
将图像转换为jpeg
格式stream.write(jpg)
向服务器写入图像格式,http
服务器将会把这个图像发送到http
客户端。
完成,运行上须代码后, 你可以通过浏览器直接看到视频流, 默认地址为
http://设备的ip:8000
。打开你的浏览器看看吧!