在视频应用中,我们一般都需要基于摄像头或录像机的视频流进行二次开发,那么就涉及到如何将视频流取出来。
在摄像机安装好之后,一般是通过局域网与本地的服务器进行连接,要取录像机的视频流就要在局域网范围内进行操作。
1)获取摄像机的IP地址、配置的用户名和密码,按照格式写出RTSP协议地址码
2)用VLC工具连接,测试是否可以取出视频流
3)python中通过opencv读取视频流
详细说明:
1)摄像机的IP地址、配置的用户名和密码是已知的参数,在安装的时候即已配置好。RTSP协议地址码根据所用摄像机的型号来定,以海康摄像头为例(来自于海康的客服):
★目前海康录像机、网络摄像机,网络球机的RTSP单播取流格式如下(车载录像机不支持RTSP取流):
rtsp://用户名:密码@IP:554/Streaming/Channels/101
→录像机示例:
取第1个通道的主码流预览
rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/101
取第1个通道的子码流预览
rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/102
取第1个通道的第三码流预览
rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/103
取第12个通道的主码流预览
rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/1201
<
在视频应用中,我们一般都需要基于摄像头或录像机的视频流进行二次开发,那么就涉及到如何将视频流取出来。在摄像机安装好之后,一般是通过局域网与本地的服务器进行连接,要取录像机的视频流就要在局域网范围内进行操作。步骤:1)获取摄像机的IP地址、配置的用户名和密码,按照格式写出RTSP协议地址码2)用VLC工具连接,测试是否可以取出视频流3)python中通过opencv读取视频流详细说明:1)摄像机的I...
1.获取海康摄像头rstp流地址。这个地址是个固定格式。
老版本的格式
rtsp
://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
username: 用户名。例如admin。
password: 密码。例如12345。
ip: 为设备IP。例如 192.0.0.64。
port: 端口号默认为554,若为默认可不填写。
codec:有h264、MPEG-4、mpeg4这几种。
★目前海康录像机、网络摄像机,网络球机的
RTSP
单播
取流
格式如下(车载录像机不支持
RTSP
取流
):
rtsp
://用户名:密码@IP:554/Streaming/Channels/101
→录像机示例:
取第1个通道的主码流预览
rtsp
://admin:hik12345@10.16.4.25:554/Streaming/Channels/101
取第1个通道的子码流预览
rtsp
://admin:hik12345@10.16.4.25:554/Streaming/Channels/102
转载来源:如有侵权,联系立马删除
★目前海康录像机、网络摄像机,网络球机的
RTSP
单播
取流
格式如下(车载录像机不支持
RTSP
取流
):
rtsp
://用户名:密码@IP:554/Streaming/Channels/101
→录像机示例:
取第1个通道的主码流预览
rtsp
://admin:hik12345@10.16.4.25:554/Streaming/Channels/101
取第1个通道的子码流预览
rtsp
://admin:hik12345@10.16.4.25:554/Streaming/Chan
URL规定:
rtsp
://username:password@<ipaddress>/<videotype>/ch<number>/<streamtype>
路径后面不能有空格、回车等符号,否则会连接失败。
举例说明:
主码流
取流
:
rtsp
://admin:12345@192.0....
海康威视摄像头
rtsp
地址格式
单播
取流
格式 `
rtsp
://{username:password}@{ip:port}/Steaming/Channels/{number}`
多播
取流
格式 `
rtsp
://{username:password}@{ip:port}/Streaming/Channels/{number}?transportmode=unicast`
流格式主要由三部分组成:
* 用户名和用户密码
* 目标地址和端口号
* 通道号和主次码流
number = 由通道号 +...
2. 代码
实现
最开始为了想快速验证
rtsp
的可行性,就用
python
写了连接、读取和显示,后来验证成功,为了项目使用,就转成qt c++了。整个过程非常简单,首先找到摄像头对应的
rtsp
地址,在这里可以查到大多数品牌的摄像头:
2.1
python
2.2 c++
frame = buffer.tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
@app.route('/')
def index():
return render_template('index.html')
@app.route('/video_feed')
def video_feed():
return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(debug=True)
请
注意
,此代码需要使用Flask框架和Jinja2模板引擎。在运行代码之前,请确保您已经安装了这些依赖项。另外,您需要将“your_
rtsp
_stream_address”替换为您自己的
RTSP
流地址。
希望这可以帮助您展示OpenCV读取的
RTSP
协议
视频流
到前端HTML页面!