video标签支持获取rtsp流么_Flask教程(二十二)在浏览器中播放rtsp实时流
软硬件环境
- windows 10 64bit
- anaconda3 with python 3.7
- pycharm 2020.1.2
- flask 1.1.2
- opencv 4.4.0
前言
当下,网络摄像机(IP Camera
)的使用已经越来越广泛,大部分的网络摄像机都是基于RTSP
(Real Time Streaming Protocol
)传输协议,可是很不幸的是,这种协议,原生浏览器都不支持。
本文介绍一种结合flask
和opencv
的方法来实现在浏览器中查看实时的视频流。
安装软件包
新建python
虚拟环境,然后安装flask
和opencv
conda create -n flask python=3.7conda activate flaskpip install flask opencv-python
编码
接下来就可以进行编码了,首先是flask
后台服务,注释已经嵌入到了代码当中
from flask import Flask, render_template, Responseimport cv2
app = Flask(__name__)
# VideoCapture可以读取从url、本地视频文件以及本地摄像头的数据# camera = cv2.VideoCapture('rtsp://admin:admin@172.21.182.12:554/cam/realmonitor?channel=1&subtype=1')# camera = cv2.VideoCapture('test.mp4')# 0代表的是第一个本地摄像头,如果有多个的话,依次类推camera = cv2.VideoCapture(0)
def gen_frames(): while True: # 一帧帧循环读取摄像头的数据 success, frame = camera.read() if not success: break else: # 将每一帧的数据进行编码压缩,存放在memory中 ret, buffer = cv2.imencode('.jpg', frame) frame = buffer.tobytes() # 使用yield语句,将帧数据作为响应体返回,content-type为image/jpeg yield (b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
@app.route('/video_start')def video_start(): # 通过将一帧帧的图像返回,就达到了看视频的目的。multipart/x-mixed-replace是单次的http请求-响应模式,如果网络中断,会导致视频流异常终止,必须重新连接才能恢复 return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
@app.route('/')def index(): return render_template('index.html')
if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
其余部分的代码应该都很熟悉了,这里就不再解释了。接下来就是模板文件index.html
html>"en">
"utf-8"> "viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
"stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
Live Streaming
"container">
"row">
"col-lg-8 offset-lg-2">
"mt-5">Live Streaming
"mt-5">Live Streaming
"{{ url_for('video_start') }}" width="100%">
使用img
标签就可以看到摄像头的图像。
最后我们启动flask
服务,在浏览器中访问链接http://127.0.0.1:5000
,就可以看到摄像头的实时视频数据了
源码下载
Flask教程专题
更多Flask
教程,请移步
https://xugaoxiang.com/category/python/modules/
video标签支持获取rtsp流么_Flask教程(二十二)在浏览器中播放rtsp实时流相关推荐
- audio与video标签支持的文件格式
audio与video标签支持的文件格式 1.audio标签支持的文件格式 (1)ogg:一种新的音频压缩格式,是完全免费.开放和没有专利限制的 (2)mp3:是一种音频压缩技术.它被设计用来大幅度地 ...
- 如果摄像头不支持Web Socket,猿大师播放器还能在网页中播放RTSP流吗?
问: 我们的情况比较复杂,摄像头设备品牌和数量都比较多,分布在全国各地都有,地点分布比较广泛,有的甚至是比较老的型号,如果摄像头设备不支持Web Socket,猿大师播放器还可以在网页中播放RTSP流 ...
- HTML5里video标签支持哪些格式的视频文件
video标签支持的视频格式: Ogg.MPEG4.WebM MP4 = MPEG 4 文件使用H264视频编解码器和AAC音频编解码器 WebM =WebM 文件使用 VP8视频编解码器和Vorbi ...
- html调用rpst 源码_在web页面中播放rtsp直播数据流方法
WEB播放RTSP直播数据流方法 附录一些RTSP测试地址: 1.rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov 一段动画片 2.rtsp: ...
- 如何在高版本Chrome中播放RTSP实时视频?
背景 随着互联网基础设施的完善以及4G.5G等技术的大规模商用,在Chrome.Firefox.Edge等浏览器播放RTSP视频流也慢慢成为了信息化系统的行业标准. 早些年还可用VLC播放器在网页中播 ...
- SAP UI5 应用开发教程之八十二 - 采用 OPA5 开发支持页面跳转的 SAP UI5 集成测试用例试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- 【开源技术分享】无需流媒体服务,让浏览器直接播放rtsp/rtmp的神器:EasyMedia
不同于市面上其他需要各种转发到流媒体服务的中间件来说,EasyMedia不需要依赖任何nginx-rtmp,srs,zlmediakit等等第三方流媒体服务,只需要你有rtsp或者rtmp等等协议的视 ...
- 二十四、Struts2中的UI标签
二十四.Struts2中的UI标签 Struts2中UI标签的优势: 数据回显 页面布局和排版(Freemark),struts2提供了一些常用的排版(主题:xhtml默认 simple ajax) ...
- video标签(获取视频时间总长度,视频当前时间,播放暂停方法,视频封面,)
下面是HTML的内容 <videoid="video"@canplay="getVidDur()"ref="vueMiniPlayer" ...
最新文章
- image vb6 图片自适应_Python人工智能使用OpenCV进行图片形状的中心检测
- 天天象棋 残局闯关 第1关
- python 真多线程_Python之路200个小例子,在线网页版来了,从此学习更方便!
- 不懂电容原理?那是你没看到这些动图
- matlab模糊推理,模糊推理系统的matlab代码
- 8.从Paxos到Zookeeper分布式一致性原理与实践---Zookeeper 运维
- 校验两个文件是否一样(MD5方式:windows,linux,自定义java代码三种方式)——亲测成功
- 共轭梯度法及其matlab程序
- 计算机审计实验一计划阶段,审计实验1.ppt
- 输入年份和月份输出该月有多少天python_输入一个年份和月份,打印出该月份有多少天(考虑闰年),用switch语句编程...
- 谈谈JavaScript版本演进史及ES3、ES5区别和特性
- IntelliJ IDEA设置豆沙绿背景
- 顺丰全栈资源下的自动化运维灵魂
- excel表格打印每页都有表头_EXCEL打印小技巧:如何打印出每张纸上都有表头标题的表格?...
- 将动画角色导入Unity 3D
- android获取imei兼容_Android如何获取双卡手机IMEI的方法示例
- java组成_java是由什么组成的?
- cJSON详细剖析(四)----cJSON_Print()函数
- Zookeeper(2) - 配置详解与启动原理
- 【建站教程】万网域名使用万网\QQ企业邮箱,设置解析方法
热门文章
- java里面有控制器吗_java怎么运行控制器里的类 java控制台输入类以及
- 杂七杂八的前端基础01——函数作用域
- Mysql默认密码的查找和修改
- Python学习十四:filter()
- HttpClient的一种简单实现Demo
- Eclipse Color Themes
- POJ 1185 炮兵阵地(状态压缩DP)
- 安装View Agent失败: The system must be rebooted before installation can continue
- MySQL优化篇:SHOW语法
- 技术总监,被判刑12年!因公司未兑现股权,愤怒植入代码,牟利333万