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

系统 900 0

搜了网上一些关于如何在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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请请扫描上面二维码支持博主1元、2元、5元等您想捐的金额吧,狠狠点击下面给点支持吧

发表我的评论
最新评论 总共0条评论