You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.7 KiB
Python

import cv2
from datetime import datetime
def main():
# 0 — встроенная USB/веб-камера
# Для RTSP можно указать строку:
# camera_url = "rtsp://login:password@192.168.1.100:554/Streaming/Channels/101"
camera_url = 0
cap = cv2.VideoCapture(camera_url)
if not cap.isOpened():
print("Ошибка: не удалось открыть камеру")
return
# Настройки камеры
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
if fps <= 0 or fps > 120:
fps = 25
print(f"Камера открыта: {width}x{height}, FPS={fps}")
filename = datetime.now().strftime("record_%Y-%m-%d_%H-%M-%S.mp4")
# Кодек для MP4
fourcc = cv2.VideoWriter_fourcc(*"mp4v")
writer = cv2.VideoWriter(
filename,
fourcc,
fps,
(width, height)
)
if not writer.isOpened():
print("Ошибка: не удалось создать файл записи")
cap.release()
return
print(f"Запись началась: {filename}")
print("Нажми Q для остановки")
while True:
ret, frame = cap.read()
if not ret:
print("Ошибка: кадр не получен")
break
writer.write(frame)
cv2.imshow("Camera recording", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
print("Остановка записи")
break
cap.release()
writer.release()
cv2.destroyAllWindows()
print(f"Видео сохранено: {filename}")
if __name__ == "__main__":
main()