Files
reolink_api/RtspClient.py
2020-10-29 16:45:08 -05:00

48 lines
1.4 KiB
Python

import os
import cv2
class RtspClient:
def __init__(self, ip, username, password, port=554, profile="main", use_udp=True, **kwargs):
"""
:param ip: Camera IP
:param username: Camera Username
:param password: Camera User Password
:param port: RTSP port
:param profile: "main" or "sub"
:param use_upd: True to use UDP, False to use TCP
:param proxies: {"host": "localhost", "port": 8000}
"""
capture_options = 'rtsp_transport;'
self.ip = ip
self.username = username
self.password = password
self.port = port
self.proxy = kwargs.get("proxies")
self.url = "rtsp://" + self.username + ":" + self.password + "@" + \
self.ip + ":" + str(self.port) + "//h264Preview_01_" + profile
if use_udp:
capture_options = capture_options + 'udp'
else:
capture_options = capture_options + 'tcp'
os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = capture_options
def preview(self):
""" Blocking function. Opens OpenCV window to display stream. """
win_name = self.ip
cap = cv2.VideoCapture(self.url, cv2.CAP_FFMPEG)
ret, frame = cap.read()
while ret:
cv2.imshow(win_name, frame)
ret, frame = cap.read()
if (cv2.waitKey(1) & 0xFF == ord('q')):
break
cap.release()
cv2.destroyAllWindows()