Python调用萤石摄像头
来自CloudWiki
准备工作
pip install requests
pip install opencv-python
查询密钥号
登录萤石官方网站->控制台
在账号中心/应用信息 查询AppKey 和Secret
在设备管理中查询 摄像头序列号
修改编码方式
需要将设备的主子码流的编码类型改为H264。
操作步骤如 下:在萤石工作室中,局域网设备管理(需与设备处于同一局域网下),高级设置中
图像-视音频中有码流类型修改,
具体请参考文档 https://open.ys7.com/bbs/article/14
(注意:若高清地址报错,需修改设备主码流的编码类型,流畅地址报错,则需修改设备的子码流编码类型),在萤石工作室-高级设置中修改配置后还报错,请联系设备售后处理。
Python代码
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import requests #导包 import cv2 login_url="https://open.ys7.com/api/lapp/token/get" #请求地址 url=login_url #拼接地址 #参数 body1={'appKey': 'xxxxxxxxx', 'appSecret': 'xxxxxxxxxxxxx', } #发送请求 r=requests.post(url=url, params=body1).json() #输出返回 print(r) print(r['data']['accessToken']) live_url="https://open.ys7.com/api/lapp/v2/live/address/get" #请求地址 body2={'accessToken': r['data']['accessToken'], 'deviceSerial': 'BA2192293', 'protocol': 2, } r=requests.post(url=live_url, params=body2).json() #输出返回 print(r) print(r['data']['url']) cap = cv2.VideoCapture(r['data']['url']) fps = cap.get(cv2.CAP_PROP_FPS) print(fps) # 获取cap视频流的每帧像素大小 size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) print(size) # 定义编码格式mpge-4 fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', '2') # 定义视频文件输入对象 outVideo = cv2.VideoWriter('saveDir2.avi', fourcc, fps, size) #size必须和视频流的帧大小一致,否则无法执行 # 获取视频流打开状态 if cap.isOpened(): rval, frame = cap.read() print('ture') else: rval = False print('False') tot = 1 c = 1 # 循环使用cv2的read()方法读取视频帧 while rval: rval, frame = cap.read() frame = cv2.resize(frame, (400, 300)) #调整画面大小 cv2.imshow('test', frame) # 使用VideoWriter类中的write(frame)方法,将图像帧写入视频文件 outVideo.write(frame) cv2.waitKey(25) cap.release() outVideo.release() cv2.destroyAllWindows()