adds code


녹칸다(포로리야공대가자)의 아두이노 시리즈 428편 영상이다. 이번 2부에서는 ESP32-CAM 여러 개를 총동원해 실시간 스트리밍과 녹화까지 지원하는 저예산 4채널 CCTV를 Node-RED로 완성한다. 1부에서 만든 1채널 CCTV를 확장하는 방식이라 구조 자체는 단순하지만, Node-RED의 기본 사용법을 모르면 쉽다고 할 수는 없다. 이참에 Node-RED의 간단한 사용방법도 함께 익혀두자.

빠른 답변: ESP32-CAM 모듈 여러 개가 RTSP/MJPEG로 영상을 스트리밍하고, Node-RED가 이 스트림을 받아 대시보드에 뿌려주며, ffmpeg가 일정 단위로 파일을 잘라 녹화한다. 카메라 모듈은 개당 만 원 남짓이고 서버는 집에 있는 PC 한 대면 충분하므로 전체 비용이 상용 CCTV 대비 매우 낮다. 다만 화질과 야간 성능, 장기 안정성은 상용 제품보다 떨어진다.

ESP32-CAM 4채널 CCTV는 어떻게 구성될까?

ESP32-CAM은 ESP32 칩에 OV2640 카메라 모듈과 SD카드 슬롯이 얹힌 초저가 보드다. 각 보드가 와이파이로 RTSP 또는 MJPEG 스트림을 내보내면, Node-RED가 채널별로 스트림을 받아 대시보드에 표시한다. 영상 하나당 채널 하나이므로, 카메라를 3~4개 두면 그대로 멀티채널 CCTV가 된다. 서보모터를 얹으면 팬틸트까지 확장할 수 있어 감시 범위를 넓힐 수 있다.

녹화는 ffmpeg가 담당한다. Node-RED의 exec 노드에서 ffmpeg를 실행해 스트림을 받고, segment 옵션으로 일정 시간 단위의 mp4 파일로 분할 저장한다. 파일명에 strftime 패턴을 쓰면 날짜와 시간이 자동으로 붙어 나중에 찾기 쉽다.

직전예제 샘플:

ffmpeg -f rtsp -i "스트림주소" -preset ultrafast -vcodec libx264 -f segment -strftime 1 -segment_time 5 -reset_timestamps 1 "C:\Users\wajang\.node-red\root\video\%Y-%m-%d-%H-%M-%S_steam1.mp4" -f image2pipe pipe:1

이번예제 샘플:

ffmpeg -f rtsp -i "rtsp://192.168.0.17:8554/mjpeg/1" -preset slow -codec:a libfdk_aac -b:a 128k -codec:v libx264 -pix_fmt yuv420p -b:v 2500k -minrate 1500k -maxrate 4000k -bufsize 5000k -f segment -strftime 1 -segment_time 10 -reset_timestamps 1 "C:\Users\wajang\.node-red\root\video\%Y-%m-%d-%H-%M-%S_steam1.mp4" -f image2pipe pipe:1

ESP32-CAM CCTV의 한계는 무엇일까?

먼저 화질이다. OV2640은 200만 화소 수준이라 낮에는 쓸 만하지만, 실내 조명이 약해지면 노이즈가 크게 늘어난다. 야간 성능 차이는 더 크다. 기본 탑재된 IR LED는 근거리만 비추고, 진정한 야간 투시 성능은 상용 보안 카메라의 센서와 IR 설계와 비교하면 격차가 크다. 안정성도 약점이다. ESP32-CAM은 메모리가 작아 장시간 스트리밍 중 와이파이가 끊기거나 보드가 재부팅되는 일이 종종 있고, 발열 관리도 필요하다. 사람 감지나 모션 알림 같은 기능은 상용 제품에서는 기본이지만, DIY 구성에서는 별도로 구현해야 한다.

녹화 품질을 잡는 실용 팁 하나

ffmpeg 비트레이트 튜닝이 핵심이다. 위 이번예제 샘플처럼 -b:v, -minrate, -maxrate, -bufsize를 지정하면 화질이 일정 수준으로 유지되고 네트워크 부하도 예측 가능해진다. preset은 ultrafast가 서버 부담은 적지만 화질 대비 대역폭을 많이 쓰고, slow는 반대다. 서버 성능을 확인한 뒤 고르자. 여기에 프레임레이트를 10~15fps로 낮추면 감시용 영상으로는 충분하면서 와이파이 부담과 프레임 드랍이 확 줄어든다. 10초 단위 segment 분할은 파일 하나가 깨져도 피해를 그 파일로 한정시켜 주므로 그대로 유지하는 것이 좋다.

DIY ESP32-CAM CCTV는 배우고 실험하기 좋은 프로젝트지만, 상용 보안 카메라와 비교하면 화질, 야간 투시, 사람 감지, 로컬 저장 같은 부분에서 차이가 크다. 구매 전에는 검증된 사양 기반 보안 카메라 비교를 확인해 예산과 필요한 기능을 맞춰보는 것이 좋다.

추천하는 사이트를 통해 구매하시면 우리가 소정의 수수료를 받을 수 있습니다.

Node-RED 서버를 처음부터 구축하려면 Node-RED와 MQTT, ESP32로 만드는 로컬 스마트홈 가이드를, 서버를 라즈베리파이로 꾸미고 싶다면 라즈베리파이 키트 비교 글을 참고하자.

원본 강의 자료: bota.tistory.com

Previous Post Next Post