CCTV 영상을 단순히 보는 수준을 넘어서, 웹 화면에서 실시간으로 확인하고 사람·차량 움직임을 AI로 분석할 수 있는 프로그램을 개발했습니다.
이번에 만든 프로그램은 RTSP CCTV 영상을 웹 브라우저에서 재생하고, 영상 위에 직접 분석 영역이나 출입선을 설정해 이벤트를 수집하는 관제 시스템입니다.
주요 목적은 매장, 사무실, 물류창고, 주차장, 도로 주변 CCTV처럼 “영상을 보고 끝나는 것”이 아니라, 영상 속 상황을 데이터로 남기고 운영에 활용하는 것입니다.
[분활화면으로 한번에 관제화면]

[클릭한 CCTV 관제화면]

주요 기능
현재 구현된 기능은 다음과 같습니다.
- RTSP CCTV 카메라 등록 및 관리
- 웹 브라우저 기반 실시간 관제
- 여러 카메라를 그룹으로 묶어 분할 화면 관제
- 영상 클릭 시 단일 카메라 확대 보기
- 사람 감지 및 현재 인원수 확인
- 차량 감지 및 차종별 집계
- 지정 영역 내 혼잡도 감지
- 지정 영역 침입 감지
- 출입선 기반 입장·퇴장 카운트
- 차량 통과 카운트
- 차량 수와 저속·정지 비율 기반 교통 혼잡 감지
- 이벤트 이력 저장
- 관리자 로그인
- 카메라 접속정보 암호화 저장
원본 영상이나 캡처 이미지를 계속 저장하는 방식이 아니라, 분석 결과와 이벤트 중심으로 데이터를 저장하도록 구성했습니다.
전체 구조
아래 이미지는 프로그램의 전체 흐름을 간단히 정리한 구조 도입니다.

이미지에서 볼 수 있듯이 CCTV의 RTSP 영상은 MediaMTX를 통해 웹 모니터링 화면으로 전달되고, 동시에 AI 분석 서버에서 사람과 차량을 탐지합니다.
탐지된 객체는 추적 과정을 거친 뒤, 사용자가 설정한 영역이나 출입선 규칙에 따라 이벤트로 판정됩니다. 이후 이벤트와 통계 데이터는 DB에 저장되고, API와 WebSocket을 통해 웹 화면에 실시간으로 반영됩니다.
구조를 단순화하면 다음과 같습니다.
CCTV 카메라
→ RTSP 영상 입력
→ MediaMTX 영상 중계
→ 웹 브라우저 실시간 재생
→ FastAPI 서버
→ OpenCV 영상 프레임 처리
→ YOLO 기반 사람·차량 탐지
→ ByteTrack 객체 추적
→ 영역/출입선 규칙 판정
→ SQLite 이벤트 저장
→ WebSocket 실시간 화면 반영
영상 재생과 AI 분석을 분리한 구조입니다.
브라우저에서 보는 실시간 영상은 MediaMTX를 통해 WebRTC 또는 HLS로 재생하고, AI 분석은 서버 쪽에서 별도 워커가 RTSP 영상을 읽어 처리합니다. 덕분에 사용자가 특정 카메라를 크게 보고 있지 않아도, 등록된 카메라의 분석은 계속 실행됩니다.
사용 기술
기술적으로는 다음 요소들을 조합했습니다.
- Python
- FastAPI
- OpenCV
- YOLO11
- ByteTrack
- MediaMTX
- SQLite
- WebSocket
- Docker Compose
- HTML/CSS/JavaScript
FastAPI는 웹 화면, API, 로그인, WebSocket 통신을 담당합니다.
MediaMTX는 RTSP 영상을 브라우저에서 볼 수 있도록 WebRTC/HLS로 중계합니다.
OpenCV와 YOLO는 영상 프레임에서 사람과 차량을 탐지하고, ByteTrack은 같은 객체의 이동을 이어서 추적하는 역할을 합니다.
화면에서 설정 가능한 분석 방식
사용자는 웹 화면에서 직접 분석 영역을 만들 수 있습니다.
예를 들어 매장 대기 공간에 사각형 또는 다각형 영역을 그려두고, “8명 이상이 10초 이상 머물면 혼잡 이벤트 발생” 같은 규칙을 설정할 수 있습니다.
출입구에는 가상선을 그어 입장 방향과 퇴장 방향을 구분할 수 있습니다. 사람이 선을 통과하면 입장·퇴장 이벤트로 저장됩니다.
차량 분석도 가능합니다. 도로 또는 주차장 영역을 지정하고, 차량 수와 저속·정지 비율을 기준으로 교통 혼잡 상태를 판단할 수 있습니다.
활용 가능한 곳
이 프로그램은 다음과 같은 환경에 적용할 수 있습니다.
- 매장 방문객 수 확인
- 출입구 입장·퇴장 카운트
- 대기줄 또는 혼잡 구역 감지
- 직원 전용 구역 침입 감지
- 물류창고 구역별 인원 확인
- 주차장 차량 통과 카운트
- 도로 CCTV 기반 정체 구간 감지
- 여러 CCTV를 그룹별로 나누어 관제
기존 RTSP CCTV가 있는 환경이라면 별도 카메라를 새로 설치하지 않고도 적용 가능성을 검토할 수 있습니다.
보안과 저장 방식
카메라 RTSP 접속정보는 평문으로 저장하지 않고 암호화해서 보관합니다.
웹 화면과 API는 관리자 로그인 후 사용할 수 있도록 구성했습니다.
또한 이 프로그램은 원본 영상 저장을 기본 목적으로 하지 않습니다. 영상 전체를 계속 저장하는 방식이 아니라, 이벤트와 분석 결과 중심으로 데이터를 남기는 구조입니다.
현재 버전의 범위
현재 버전은 CPU 환경에서도 동작할 수 있도록 구성한 실시간 분석 프로그램입니다.
다만 설치 환경, 카메라 해상도, FPS, 서버 성능, 카메라 각도에 따라 분석 정확도와 처리 속도는 달라질 수 있습니다.
상용 환경에 적용하려면 실제 카메라 영상으로 영역 설정, 감지 기준, FPS, 신뢰도 등을 현장에 맞게 조정하는 과정이 필요합니다.
데모 신청 및 구매 문의
이 글에서는 전체 구조와 기능만 간단히 소개했습니다.
실제 설치 방법, 서버 배포 방법, 카메라 설정값, 분석 정확도 조정 방법, 장애 점검 방법, 세부 운영 문서는 프로그램 구매자에게 별도로 제공할 예정입니다.
프로그램 데모를 보고 싶으신 분은 댓글로 데모 신청을 남겨주세요.
댓글에 아래 내용을 함께 적어주시면 더 정확하게 안내드릴 수 있습니다.
- 사용하려는 장소
- 보유 중인 CCTV 카메라 수
- 필요한 기능
- 매장/창고/도로/주차장 등 적용 목적
RTSP CCTV 기반 실시간 관제나 AI 분석 기능에 관심 있으신 분은 댓글로 문의 남겨주세요.