利用python的flask包进行本地局域网连接。 实现PC端利用opencv-python读取摄像头,手机端接收视频。
目前只能做到一对一,下一步研究局域网一对多传输
******(顺便记录几个可用的直播测试源(与本文无关):
- rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
- rtmp://live.hkstv.hk.lxdns.com/live/hks1
- rtmp://live.hkstv.hk.lxdns.com/live/hks2
-
rtmp://202.69.69.180:443/webcast/bshdlive-pc
)******
环境需要:
sudo pip install flask
sudo pip install opencv-python
手机端接收的视频截图
:
1. pc端读取usb摄像头数据
camera=cv2.VideoCapture(1)
2. 进行每帧图像的编码
imgencode=cv2.imencode('.jpg',im)[1]
参考
cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像。
cv2.imencode()函数是将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输。
**
3. 图像格式的转换
stringData=imgencode.tostring()
4. yield返回生成器
yield (b'--frame\r\n'
b'Content-Type: text/plain\r\n\r\n'+stringData+b'\r\n')
5. 调用flask包
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/calc')
def calc():
return Response(get_frame(),mimetype='multipart/x-mixed-replace; boundary=frame')
6. 局域网设置
**
HOST = '0.0.0.0' #而localhost只能在本机运行
app.run(host=HOST, port=9000)
然后手机输入你程序所在的的ip,加上端口
如格式:192.168.1.2:900
另外还需要编辑一个 html文件:
<html>
<head>
<title>局域网:Video Streaming Test</title>
</head>
<body>
<h1>局域网测试:一对一</h1>
<img src="{{ url_for('calc') }}">
<!-- <h1>{{ url_for('calc') }}</h1> -->
</body>
</html>
版权声明:本文为qq_32768679原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。