과거의 내가 미래의 나에게
IP 카메라 영상 통신에 대한 얕은 정리 본문
영상 관련 이슈가 간간히 들려온다. 직접 개발을 해야할 정도는 아니지만 요청에 대비하려면 영상 관련 단어들에 대해 익숙할 필요가 있어서 단순 나열식으로 영상 관련 용어?를 알아보고 정리해둔다. 워낙 넓은 세계라 나는 그 일부만 파악하고 적었기에 어쩌면 정확하지 않은 내용이 나열되어있을 수도 있겠다!
개요
영상은 보통 카메라를 통해 촬영된다. 이 카메라의 종류는 우리가 흔히 쓰는 스마트폰이나 캠코더같은 것이 있을 수 있고 또 더 나아가 CCTV 같은데서 주로 쓰이는 IP 카메라도 있다.
이러한 카메라는 영상을 촬영한 다음에 영상을 볼 수 있도록 그 정보들을 장비에 옮기는데, 이 때 HDMI나 SDI처럼 직접 물리적으로 옮길 수도 있을 것이고 혹은 네트워크를 통해 옮길 수도 있을 것이다.
위와 같이 영상을 찍는 카메라의 종류도 많고 또 이를 옮길 수 있는 수단도 다양해서 관심 있는 분야을 먼저 봐야할 것 같은데 나는 네트워크 기반의 카메라인 IP 카메라를 중심으로 알아보았다.
IP 카메라의 영상 송출 개요
CCTV같은 IP 카메라를 통해 영상이 촬영되면 보통 네트워크를 통해 실시간으로 영상 정보를 넘겨준다. 네트워크를 통해정보를 주기 위해서는 통신 프로토콜이 필요할텐데, 이 때 쓰이는 것이 RTSP 프로토콜이다.
카메라는 RTSP 통신을 통해 영상 정보를 실시간으로 서버로 보내고, 서버는 이 영상 정보를 보관해 녹화 영상을 만들거나 바로 송출하여 실시간으로 영상을 볼 수 있게끔 만들어 주는 것이다.
여기서 영상 정보를 받아 처리하는 서버는 대표적으로 VMS, NVR, 스트리밍 서버, AI 분석 서버 등이 있다. 이 서버들은 영상정보를 다양한 목적에 맞게끔 이용할 수 있도록 도와주는 서버로 각각 비슷한 역할을 하지만 특화된 부분이 다르다.
■ RTSP 통신 프로토콜(Real-Time Streaming Protocol)
RTSP는 애초에 스트리밍이란 말이 들어가있는만큼 영상 데이터를 스트리밍 형태로 전송하고 제어하기 위해 사용된다.
< 참조 >
RTSP는 사실 데이터를 직접 전송하기보다는 제어하는 쪽에 가깝다. 데이터를 전송하는 것은 RTCP와 RTP를 활용한다고 한다. RTSP는 일종의 리모컨 같은 것.따라서 카메라에서 영상이 찍히면 영상 데이터를 스트리밍 형태로 전송하는 데 쓰이고 또 단순히 전송할 뿐만 아니라 스트리밍을 시작, 중지, 일시 중단 후 재개하는 데도 해당 통신을 이용하게 된다. 녹화 기능도 있다는데 카메라 자체에 저장영역이 있다면 카메라로부터 영상을 저장하라는 신호를 보내는 거라 하는가보다.
여하튼 이는 표준화가 된 프로토콜인지라 다양한 기기와 호환이 가능하며 데이터를 실시간으로 보내는 형태라 실시간으로 빠딱 봐야하는 환경에서 자주 활용된다.
다만, RTSP는 브라우저에 대한 지원이 없어서 브라우저와는 친하지 않고 또 네트워크 환경에 따라 지연이 발생할 가능성이 크다(당연한거지만..)
< 참조 >
영상과 관련된 프로토콜을 여럿 보다가 RTSP 외에도 ONVIF, WebRTC 등 여러가지가 있었는데, 이는 영상 자체에 관련되기 보다는 특정 어느 것을 더 쉽고 편하게 쓰기 위해 만들어진 프로토콜인 듯 하다. 예를 들어 ONVIF는 카메라 장비들의 설정과 제어를 위해 제공하는 프로토콜로 IP 카메라 간의 호환성과 표준성을 보장한다 하고, WebRTC는 RTSP로 받은 것을 WebRTC 형태로 변환하여 사용한다면 서버끼리 교환하기가 편한 형태가 되어 좀 더 유용하게 쓸 수 있다.이런식으로 다 플러스의 형태인 것이라서 나는 일단 영상 정보에 좀 더 초점을 맞췄기에 이를 먼저 알아보았다. 나중에 기회가 되면 더 알아 볼 때가 오겠지~
■ 영상 정보 처리 서버
1) VMS(Video Management System)
IP 카메라 영상을 실시간으로 수집하고 모니터링하며 저장할 수 있도록 하는 서버이다. 주로 공공시설이나 스마트시티, 보안 쪽에서 큰 규모로 많이 쓰이는터라 수 백대의 카메라를 중앙에서 통합 관리 가능하며 또한 여러 대의 카메라에서 수집된 영상들을 하나의 인터페이스에서 실시간으로 확인 가능하기도 한다. 그 뿐 아니라 기타 기능을 추가하여 영상 내 움직임을 감지하거나 특정 이벤트를 감지하여 별로도 알림 전송하는 듯 다양한 곳에서 활용할 수 있다.
2) NVR(Network Video Recorder)
IP 카메라에서 전송된 영상을 저장하고 재생하는 데 초점이 맞춰져있다. VMS가 대규모라면 NVR은 소규모의 느낌? 아파트 단지같은 곳에서 영상을 보고 저장하여 활용하는데 쓰인다 보면 될 것 같다.
3) 스트리밍 서버
RTSP로 들어온 IP 카메라 영상 데이터를 다양한 클라이언트 환경에 맞게 변환하는 데 초점을 맞춘 서버이다. WebRTC, HLS 같은 기타 다른 데이터 형태로 변형시켜 제공하며 실시간 데이터를 저지연으로 사용자에게 제공한다고 한다.
4) AI 분석 서버
IP 카메라 데이터를 분석하여 객체를 탐지하거나 사람 얼굴, 번호판을 인식하여 여러 곳에서 활용될 수 있는 서버로 영상데이터를 받아서 좀 더 고차원적인 정보를 제공해준다. RTSP 영상 데이터로 이것저것 많이 할 수 있다는 것을 써놓고 싶어서 추가해놨다!
< 동영상 플레이어? >
참고로 동영상 플레이어도 RTSP 영상 정보를 바로 받아서 송출할 수 있는 수단 중 하나다! IP 카메라에서 직접 RTSP 주소를 받아도 되고 서버에서 처리된 영상 정보를 받아서 처리해도 되고 어찌되었든 영상 정보를 표출할 수 있는 수단 중 하나기에 그냥 적어놓는다.
정말 겉핥기만 했는데 사실 맞는 내용인지 아리송한 것도 어느정도 있다. 좀만 더 여유가 있다면 RTSP가 나오게 된 계기와 현재 RTSP의 위치같은 것도 보고 싶은데...이는 다음으로 넘겨야겠다 ㅎㅎ