블로그 목록
IoTCCTV클라우드AI스트리밍임베디드

CCTV 영상을 AI로 분석하는 방법 — 공인 IP 없이 구축하기

공인 IP 없는 환경에서 CCTV 영상을 클라우드로 전송하기 위해 소형 중계기를 개발한 과정과, 이미지 캡처 vs 실시간 스트리밍 방식의 비용·성능 비교, 그리고 AI 연동에 최적화된 하이브리드 접근법을 소개합니다.

OpenIoT

관리자

배경

AI로 CCTV 영상을 분석하고 싶었습니다. 사람이 감지되면 알림을 보내거나, 특정 시간대의 이상 행동을 탐지하거나, 단순히 "지금 사무실에 누가 있는지"를 물어보면 답해주는 시스템을 만들고 싶었습니다.

그런데 첫 번째 벽에 부딪혔습니다.

카메라 영상을 클라우드로 가져올 수가 없었습니다.

대부분의 가정용/소규모 CCTV는 공유기 뒤에 있습니다. 공인 IP가 없으면 외부에서 카메라에 직접 접근할 방법이 없습니다. 제조사 앱으로는 볼 수 있지만, 그건 제조사 클라우드를 경유하는 것이고 — 거기에 직접 만든 AI를 끼워 넣을 수는 없습니다.

포트포워딩은 보안 문제가 있고, VPN은 유지보수가 번거롭고, 제조사 API는 대부분 비공개입니다.

결국 카메라와 같은 네트워크에 무언가를 하나 두고, 그게 대신 영상을 밖으로 보내주면 되지 않을까? 라는 생각에 도달했습니다.

소형 중계기라는 아이디어

카메라 옆에 작은 장치를 하나 둡니다. 이 장치가 로컬 네트워크에서 카메라 영상을 가져오고, 인터넷을 통해 클라우드 서버(OpenIoT 플랫폼)로 전송합니다. 클라우드에서는 웹으로 보거나, AI에 연결하거나, 저장하거나 — 무엇이든 할 수 있게 됩니다.

CCTV 소형 중계기 클라우드 연결 구조도

핵심은 카메라는 바뀌지 않는다는 점입니다. 기존에 설치된 카메라를 그대로 두고, 중계기만 추가하면 됩니다. 중계기는 로컬 네트워크 안에서 카메라에 접속하기 때문에 공인 IP가 필요 없고, 클라우드로 나가는 것은 일반적인 아웃바운드 HTTPS 통신이므로 방화벽 문제도 없습니다.

중계기로는 손바닥만 한 마이크로컨트롤러 보드(ESP32)를 사용했습니다. WiFi가 내장되어 있고 전력 소모가 극히 적어서, 카메라 옆에 USB로 전원만 연결하면 됩니다.

그런데 영상을 어떻게 보낼 것인가

카메라에서 영상을 가져오는 것까지는 해결됐습니다. 문제는 어떤 형태로 클라우드에 전달하느냐였습니다. 크게 두 가지 선택지가 있었습니다.

방식 A: 이미지를 계속 찍어서 보내기

카메라에서 프레임 하나를 캡처하고, JPEG로 변환한 뒤, 서버에 올립니다. 이걸 반복하면 마치 슬라이드쇼처럼 "거의" 실시간으로 보입니다.

장점은 구조가 단순하고, 서버 쪽에 특별한 스트리밍 인프라가 필요 없다는 것입니다. 단점은 초당 프레임 수가 매우 낮고 (실측 약 0.25 FPS), 레이턴시가 4~8초 정도 된다는 것입니다.

방식 B: 진짜 스트리밍하기

카메라에서 영상 데이터를 연속으로 수신하면서, 중계기가 실시간으로 클라우드 스트리밍 서비스에 전송합니다. 웹에서는 표준 스트리밍 프로토콜로 재생합니다.

화질은 원본 그대로(1080p, 풀 FPS), 레이턴시는 2~5초입니다. 하지만 구현 난이도가 상당합니다. 중계기에서 영상 컨테이너 포맷을 직접 패키징해야 하고, 클라우드 서명 인증까지 처리해야 합니다.

진짜 어려웠던 것들

겉보기엔 "카메라에서 영상 받아서 서버로 보내면 끝" 같지만, 중계기 같은 제한된 환경에서 이걸 구현하는 건 예상보다 훨씬 까다로웠습니다.

카메라 영상 프로토콜 직접 구현

카메라가 사용하는 영상 프로토콜(RTSP, RFC 7826)은 "세션 수립 → 인증 → 미디어 협상 → 전송 시작"의 과정을 거칩니다. 기존 라이브러리들은 중계기의 메모리에 올리기엔 너무 컸기 때문에 이 과정을 처음부터 직접 구현해야 했습니다.

특히 영상 데이터가 네트워크 패킷 단위로 분할되어 오기 때문에, 이걸 원본 프레임으로 재조립하는 과정이 필요했습니다. 작은 데이터는 패킷 하나에 담기지만, 큰 키프레임은 수십 개의 패킷으로 쪼개져서 옵니다.

스트리밍 서비스로의 실시간 전송

이미지 업로드는 단순한 HTTP 요청이면 되지만, 실시간 스트리밍은 차원이 다릅니다. 중계기가 영상 컨테이너 포맷(Matroska/MKV)을 직접 생성하면서, 클라우드 인증 서명까지 처리하고, 암호화된 연결 위에서 청크 단위로 연속 전송해야 합니다.

이 모든 것을 메모리 수백 KB, 클럭 수백 MHz의 환경에서 실시간으로 처리해야 했습니다. 시간 동기화가 조금이라도 어긋나면 인증이 거부당하고, 패키징 포맷이 1바이트라도 틀리면 서비스에서 연결을 끊어버립니다.

시간 동기화 문제

클라우드 인증에는 정확한 현재 시각이 필요한데, 마이크로컨트롤러에는 실시간 시계가 없습니다. 표준 시간 동기화 서비스(NTP)가 네트워크 환경에 따라 막혀 있는 경우도 있어서, 3단계 폴백을 구현했습니다.

그래서 뭐가 더 나은가 — 비용으로 비교해 보았습니다

두 방식을 실제로 구현한 뒤, 60초 동안 운영했을 때의 클라우드 비용을 측정했습니다.

이미지 방식 (60초)

항목내용
중계기약 15장 캡처 + 업로드
서버15회 이미지 변환 + 저장
뷰어60회 최신 이미지 폴링
총 비용약 1.5원

스트리밍 방식 (60초)

항목내용
중계기1080p 영상 연속 전송 (~22.5MB)
서버스트리밍 수신 + 웹 재생 URL 발급
뷰어실시간 영상 재생 (~22.5MB 수신)
총 비용약 4.7원

비교

이미지 방식스트리밍 방식
60초 비용~1.5원~4.7원
화질슬라이드쇼 (~0.25 FPS)실시간 영상 (풀 FPS)
레이턴시4~8초2~5초
하루 1시간 사용 시~90원/월~282원/월
상시 가동 (24h)~2,160원/월~6,768원/월

스트리밍 방식이 약 3배 비싸지만, 월 단위로 보면 둘 다 커피 한 잔 이하입니다. 선택은 용도에 따라 달라집니다.

결론: AI 연동에는 이미지면 충분합니다

여기서 중요한 깨달음이 하나 있었습니다.

AI에게는 영상 스트림이 필요 없습니다. 이미지 한 장이면 됩니다.

사람 감지, 물체 인식, 이상 탐지 — 대부분의 영상 AI는 결국 프레임 단위로 분석합니다. 1초에 30장을 분석할 필요가 없습니다. 몇 초에 한 장이면 충분하고, 이벤트가 감지되었을 때 그때 더 자주 캡처하면 됩니다.

이 경우 비용은 캡처 1회당 약 0.06원입니다. 10초에 한 번씩 캡처해도 하루 약 500원, 분 단위로 하면 하루 90원도 안 됩니다.

실시간 영상이 필요한 순간 — 알림을 받고 "지금 뭐가 보이는지" 확인하고 싶을 때 — 그때만 스트리밍을 켜면 됩니다. 평상시에는 이미지 캡처로 AI를 돌리고, 필요할 때만 스트리밍으로 전환하는 하이브리드 방식이 가장 현실적입니다. OpenIoT 요금제에서 프로젝트에 맞는 플랜을 확인해 보세요.

추후 계획

카메라 자체를 제작할 예정입니다

현재는 기성 카메라 + 별도 중계기 구조입니다. 하지만 카메라 모듈과 중계기를 하나로 합치면 — 즉, 카메라 자체를 직접 만들면 — 별도 장치 없이 카메라 하나만 설치하면 바로 클라우드와 연결됩니다.

M:N 구조를 설계할 것입니다

지금은 중계기 1대 : 카메라 1대의 1:1 구조입니다. 실제 환경에서는 여러 대의 카메라를 여러 사용자가 봐야 합니다.

M대의 카메라가 N명의 사용자(또는 AI)에게 영상을 제공하는 구조입니다. 핵심은 다음과 같습니다:

  • 디바이스 관리 — 카메라마다 고유 ID, 인증, 상태 관리
  • 명령 라우팅 — 특정 카메라에만 캡처/스트리밍 명령 전달
  • 권한 제어 — 누가 어떤 카메라를 볼 수 있는지

이 구조가 갖춰지면, "카메라 3번에서 10초마다 캡처해서 AI로 분석하고, 이상이 감지되면 사용자 A에게 알림"같은 시나리오가 가능해집니다. 이러한 시스템 구축에 관심이 있다면 무료 상담을 신청해 주세요.

요약

문제해결
공인 IP 없어 카메라 접근 불가로컬 네트워크에 중계기 배치
영상을 서버로 어떻게?이미지 업로드 vs 실시간 스트리밍 (둘 다 구현)
비용은?이미지: 1.5원/분, 스트리밍: 4.7원/분
AI 연동에 필요한 것은?이미지 1장이면 충분 (0.06원/회)
다음 단계는?카메라 자체 제작 + M:N 구조

이와 같은 IoT 프로젝트의 실제 사례는 포트폴리오에서 확인하실 수 있습니다.

카메라를 "스마트"하게 만드는 건 카메라 자체의 문제가 아니라, 카메라와 클라우드 사이의 연결 문제였습니다. 손바닥만 한 중계기 하나로 그 간극을 메울 수 있었습니다. 더 많은 IoT 기술 이야기는 블로그에서 만나보세요.


IoT 서비스,
지금 바로 시작하세요

디바이스 연결부터 대시보드까지 올인원

무료 플랜으로 부담 없이 체험