Python调用海康威视网络相机之——python读取相机rtsp码流显示画面

搜罗了网上一些关于如何在python中实现海康威视相机的连接与画面播放的资料,最直接的方式是通过rtsp流来实现。

海康的rtsp协议格式如下(参考:海康相机使用RTSP):

rtsp://[username]:[passwd]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream

主码流:
rtsp://admin:[email protected]:554/h264/ch1/main/av_stream
rtsp://admin:[email protected]:554/MPEG-4/ch1/main/av_stream
子码流:
rtsp://admin:[email protected]/mpeg4/ch1/sub/av_stream
rtsp://admin:[email protected]/h264/ch1/sub/av_stream

对于刚买的网络相机,需要你更改相机的IP,将其更改到与自己电脑同一个网段,即前三个地址一致。并且设置好相机的用户名和密码。


方式一:网页预览

打开电脑的IE浏览器(或其他浏览器),在地址栏输入你的相机的IP地址,如果还是全新的相机,请去海康官网下载SADP软件来更改相机的IP并激活相机( 海康威视相机配置流程)。例如我在浏览器输入:192.168.1.64 然后网页显示登录界面如下:

Python调用海康威视网络相机之——python读取相机rtsp码流显示画面_第1张图片

输入 相机的用户名和密码登录,在预览选项中可实时查看画面

Python调用海康威视网络相机之——python读取相机rtsp码流显示画面_第2张图片

方式二:VLC视频播放器预览

 打开你的VLC media player视频播放器,选择 媒体->打开网络串流,在打开媒体->网络->请输入网络URL中填写上面提到的rtsp格式的URL;VLC下载地址

Python调用海康威视网络相机之——python读取相机rtsp码流显示画面_第3张图片

然后点击播放,即可在该播放器中实时预览相机视频画面;

方式三:python读取rtsp流 

其中将下面的代码中的相应内容替换成你的就OK了,如相机用户名,密码,IP地址和端口号(常见为554)

import cv2
cap = cv2.VideoCapture("rtsp://username:passport@ip:port/Streaming/Channels/1")
ret, frame = cap.read()
while ret:
    ret, frame = cap.read()
    cv2.imshow("frame",frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cv2.destroyAllWindows()
cap.release()

运行上述代码需要你安装相应的opencv库,我在anaconda下运行的,装的是opencv-python库。还需要你去官网下载海康的SDK(针对自己的电脑系统环境下载对应版本)将里面的HCNetSDKCom文件夹放在python代码同目录下!

方法三会出现画面卡顿的现象,具体原因分析可参考:网络摄像机画面卡顿的主要原因有哪些?  视频花屏分析


补充资料:

NTPLIB时间同步问题:

Python通过NTP同步获取时间方法

python ntp服务器同步时间

使用python同步PC本地时间

Python中的NTP时间同步

https://www.cnblogs.com/general-seven/p/5893744.html

你可能感兴趣的:(计算机视觉,Python2/Python3)