有好几种方法可以流式传输视频。最好的(也是“更轻松”)方法是使用Miguel Grinberg开发的Flask。有关Flask如何执行此操作的详细说明,请参阅他的精彩教程:flask-video-streaming-revisited。 关于flask更简单的入门,大家可以参考《爱上Raspberry Pi》P176-180.
在这个教程中:Python Web服务器将借助Flask和树莓派。我们要更详细地了解了Flask是如何工作、如何实现Web服务器以及从传感器上捕获数据并在网页上显示其状态。在本教程中的第一部分就是发送到我们前端的数据的视频流。
创建一个Web服务器环境:
首先要做的是在你的树莓派上安装Flask。
一、安装FLASK、创建基本的环境
1、直接pip安装:
sudo pip install flask
2、当我们开始一个新项目时,最好的办法就是创建一个文件夹来保存你的文件。 例如:
回到主页,到你的工作目录:
cd ~
sudo mkdir flask
cd flask
3、新建一个文件夹保存我们的项目:
mkdir camwebserver
按照上面的命令,创建一个名为“camwebserver”的文件夹,将在这里保存我们的python脚本;
4、现在,在这个文件夹/home/pi/flask/camwebserver上,我们将创建两个子文件夹:静态的CSS、最终的JavaScript文件以及HTML文件的模板。 转到你的新创建的文件夹:
cd camwebserver
sudo mkdir static
sudo mkdir templates
5、最终的目录“树”,如下所示:
flask #目录
|__camwebserver #子目录
├── static #子目录
└── templates #子目录
基本环境算是搭建完成了!
接下来我们在创建好的环境下,用Python Web 服务器应用程序来流式传输视频。
二、创建视频流媒体服务器
1、首先,下载Miguel Grinberg的树莓派相机软件包:camera_pi.py,并将其保存在创建的目录camWebServer上。 (https://github.com/Mjrovai/Video-Streaming-with-Flask/blob/master/camWebServer/camera_pi.py)
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# camera_pi.py
#
import time
import io
import threading
import picamera
class Camera(object):
thread = None # background thread that reads frames from camera
frame = None # current frame is stored here by background thread
last_access = 0 # time of last client access to the camera
def initialize(self):
if Camera.thread is None:
# start background frame thread
Camera.thread = threading.Thread