功能说明
- 使用http mimetype为multipart/x-mixed-replace报文,实现在线视频(服务器推送(Server Push) )
- 通过将图片保存文件实现拍照功能。
- 读取整个目录下的所有图片,显示图片并且可以对图片进行删除
- 使用markdown2,读取目录下的md文件,然后转换成html显示在网页上。
目录结构
文件说明:
layout.html
所有页面的基类,主要包括一个导航栏
camera_layout.html
模板中包括几个功能button
video_push.html
用来显示视频
current_picture.html
显示拍照
app.py
定义各种路由
camera.py
和摄像头操作有关的类。
关键技术说明
1 | #取得设备编号为0的 |
服务器推送(Server Push) 技术详解
1 | # 设置图片的路径后,会重新发起一次http get 方法 |
通过chrome可以看到Response Header为:
1 | HTTP/1.0 200 OK |
大致流程是:
使用telnet 测试
1 | xuqitekiMacBook-Air:pystream xuqi$ telnet |
Response 结果
1 | HTTP/1.0 200 OK |
实现方法
1 | @app.route('/video_feed') |
问题(不明白)
- Mac上Flask无法设置多个progress
- Raspberry不能开启debug=True
待解决问题
1.Raspberry上会出现Error
1 | File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock |
可能原因是因为是
如果客户端在服务器返回前,主动断开连接,则服务器端会报 [Errno 32] Broken pipe 错,并导致处理线程 crash.
没找到解决办法。
2.Raspberry 经常锁死,一直在走循环