超赞,用python实现流媒体服务器功能,寥寥几句搞定。
步骤:
要使用Python将实时摄像机传送流写入H5页面,可以使用以下步骤。
1、安装必要的软件包。您需要安装OpenCV和Flask以及gunicorn 与 gevent 。您可以通过在终端中运行以下命令来执行此操作。
pip install opencv-python
pip install Flask
pip install gunicorn
pip install gevent
2、创建Python文件。在工作目录中创建一个名为“app.py”的新Python文件。
3、导入必要的包。将以下行添加到“app.py”文件的顶部。
4、初始化Flask。将以下代码行添加到“app.py”文件中以初始化Flask
6、创建相机捕获对象。将以下代码行添加到“app.py”文件中,以创建相机捕捉对象。
7、创建HTML文件。在工作目录中创建一个名为“index.HTML”的新HTML文件。
8、添加HTML代码。将以下代码行添加到“index.HTML”文件中。
9、创建视频源路由。将以下代码行添加到“app.py”文件以创建视频源路径。
10、运行应用程序。在“app.py”文件底部添加以下代码行以运行应用程序。
服务端代码:
import cv2
from flask import Flask, render_template, Response
from gevent import pywsgiapp = Flask(__name__)@app.route('/')
def index():return render_template('index1.html')cap = cv2.VideoCapture(0)def gen_frames():while True:success, frame = cap.read()if not success:breakelse:ret, buffer = cv2.imencode('.jpg', frame)frame = buffer.tobytes()yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')@app.route('/video_feed')
def video_feed():return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')if __name__ == '__main__':server = pywsgi.WSGIServer(('192.168.1.10', 5000), app)server.serve_forever() # server = make_server('192.168.1.10', 5000, app)# server.serve_forever()app.run()
网页端代码:py同级文件夹下创建templates文件夹,按如下内容创建网页,命名为index1.html
<!doctype html>
<html><head><title>Live Camera Stream</title></head><body><h1>Live Camera Stream</h1><img src="{{ url_for('video_feed') }}"></body>
</html>
效果如下所示:
1