0、引言:
我搜索了很多海康威视网络摄像机RTSP地址相关的帖子,格式各不相同。
这里记录一下我成功取到画面的RTSP地址格式。(我不是专业的,我用了其他人的一些格式没有成功,所以仅供参考。)
1、RTSP地址格式:
格式:
rtsp://username:password@<address>:<port>/Streaming/Channels/<id>
翻译:rtsp://用户名:密码@IP地址:端口/Streaming/Channels/序号
其中,端口号默认是554,默认可省略不写;我的案例中序号1是主码流,序号2为子码流。
实例:
主码流:rtsp://admin:1234567@192.168.1.64/Streaming/Channels/1
或者:rtsp://admin:1234567@192.168.1.64:554/Streaming/Channels/1
子码流:rtsp://admin:1234567@192.168.1.64/Streaming/Channels/2
或者:rtsp://admin:1234567@192.168.1.64:554/Streaming/Channels/2
2、验证RTSP地址是否能够正确获取画面
如何知道自己写的RTSP地址是否有用呢?在网上看到比较多的方式是用VLC软件验证。这里提供三种我用到的方式,可以根据自己的条件任选一种即可:PotPlayer、VLC、opencv。
2.1 已有并使用PotPlayer软件读取地址
PotPlaye图标操作:打开软件——空白处右键——打开——打开链接(快捷键CTRL+U) ——粘贴你的RTSP地址——确定。稍等几秒出现画面,如果未出现画面,尝试其他方案。
2.2 已有并使用VLC软件读取地址
VLC 图标操作:左上角媒体——流(快捷键CTRL+S)
操作:网络——粘贴链接——串流——(目标设置)下一个——(转码选项)下一个。[目标设置和转码选项,不做选择我也能正常出画面。]
如果没有画面或者报错, 尝试其他方案,或者可以认为地址不正确。
2.3 使用opencv—python
在虚拟环境中安装opencv—python
pip install opencv-python
然后使用以下代码:
import cv2url = "rtsp://admin:1234567@192.168.1.64/Streaming/Channels/1" # 双引号中更换为自己的RTSP地址cap = cv2.VideoCapture(url)ret, frame = cap.read()while ret: ret, frame = cap.read() cv2.imshow("frame", frame) if cv2.waitKey(1) & 0xFF == ord('q'): breakcv2.destroyAllWindows()cap.release()
在安装了opencv的环境中运行以上代码,若出现实时画面,则地址有效,按q键结束程序。
若几秒后没有反应,则地址可能无效。
小结:关于画面延迟
观察以上三种方式所得到的实时画面延时:opencv——python<VLC<PotPlayer