搜了网上一些关于如何在python中实现海康威视相机的连接与画面播放的资料,最直接的方式是通过rtsp流来实现。
海康的rtsp协议格式如下(参考:海康相机使用RTSP):
rtsp://[username]:[passwd]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
主码流:
rtsp://admin:12345@192.168.1.64:554/h264/ch1/main/av_stream
rtsp://admin:12345@192.168.1.64:554/MPEG-4/ch1/main/av_stream
子码流:
rtsp://admin:12345@192.168.1.64/mpeg4/ch1/sub/av_stream
rtsp://admin:12345@192.168.1.64/h264/ch1/sub/av_stream
对于刚买的网络相机,需要你更改相机的IP,将其更改到与自己电脑同一个网段,即前三个地址一致。并且设置好相机的用户名和密码。
方式一:网页预览
打开电脑的IE浏览器(或其他浏览器),在地址栏输入你的相机的IP地址,如果还是全新的相机,请去海康官网下载SADP软件来更改相机的IP并激活相机( 海康威视相机配置流程)。例如我在浏览器输入:127.0.0.1 然后网页显示登录界面如下:
输入 相机的用户名和密码登录,在预览选项中可实时查看画面
方式二:VLC视频播放器预览
打开你的VLC media player视频播放器,选择 媒体->打开网络串流,在打开媒体->网络->请输入网络URL中填写上面提到的rtsp格式的URL;VLC下载地址
然后点击播放,即可在该播放器中实时预览相机视频画面;
方式三: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
本文为张军原创文章,转载无需和我联系,但请注明来自张军的军军小站,个人博客http://www.zhangjunbk.com