반응형


00. 링크


[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #1

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #2 - V4L2로 스트리밍 하기

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #3 - RTSP 클라이언트 <= (현재글)

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #4 - CVLC 자동실행

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #5 - DDNS와 Port Forwarding 설정

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #6 - ffmpeg와 crontab을 이용한 녹화 기능 구현

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #7 - 녹화 영상에 시간 넣기




01. 개요



스트리밍 영상을 제공하는 방법을 알았다면, 제공 받는 방법도 알아야 한다. 2편에서 V4L2와 CVLC를 이용하여 스트리밍 서버 구성을 완료 하였다. RTSP 서버 구성 방법을 자세히 알고 싶으신 분들은 1편2편을 먼저 참고하기 바란다.

본 포스팅에서는 VLC Player(컴퓨터)와 DafangCam - RTSP Player(안드로이드 모바일)을 이용하여 RTSP 영상을 재생하는 방법에 대해서 소개하려고 한다.

DVR 시스템까지는 필요 없고, 실시간 영상 확인 정도만 필요하다면, RTSP를 지원하는 ipCam 을 설치한 후 본 포스팅을 참고하면 된다.


02. 윈도우 기반에서 RTSP 영상 재생 방법



RTSP 영상은 RTSP 클라이언트 프로그램과, RTSP URL 정도만 알고 있다면 간단히 재생할 수 있다. 윈도우 기반의 RTSP 클라이언트 프로그램은 대표적으로 VLC 플레이어를 사용하면 된다. VLC 플레이어는 
http://www.videolan.org/ 홈페이지에서 다운로드 받을 수 있다.

[그림1] VLC media player 홈페이지[그림1] VLC media player 홈페이지


videolan.org 에 접속을 하게 되면 VLC 를 다운로드 받을 수 있는데, 자신의 운영체제에 맞게 다운로드를 받으면 된다.




[그림2] VLC 실행 후 RTSP 영상 재생하기 #1[그림2] VLC 실행 후 RTSP 영상 재생하기 #1


다운로드 받은 VLC 플레이어를 설치하고, 실행을 한다. 미디어 -> 네트워크 스트림 열기 를 클릭한다.


[그림3] VLC 실행 후 RTSP 영상 재생하기 #2[그림3] VLC 실행 후 RTSP 영상 재생하기 #2


[그림3]은 RTSP 주소를 설정하는 화면이다. RTSP 주소는 2편에서 실행한 cvlc 파라미터에서 확인할 수 있다. [그림3]의 하단부 터미널 화면을 보게 되면 마지막에 rtsp://:8554/test.sdp 부분이 있다. 이 부분을 서버의 ip 와 조합하여, rtsp://192.168.219.112:8554/test.sdp 라는 URL을 완성시키고, VLC 화면의 네트워크 주소 입력부에 입력을 한 후 재생을 누른다. 만약, RTSP를 지원하는 ipCAM 을 설치한 사용자라면, 보안이 설정된 URL 을 완성시켜야 한다. 보안이 설정된 URL 의 형식(ipCAM에서 id 와 password를 설정이 완료된 상태여야 한다.)은 다음과 같다.

rtsp://ID:Password@IP:Port/Path


[그림4] VLC 플레이어에서 RTSP 영상이 재생되는 화면[그림4] VLC 플레이어에서 RTSP 영상이 재생되는 화면


[그림4] 와 같이 VLC 플레이어에서 정상적으로 RTSP 영상이 재생되면 끝이다.




03. 안드로이드 기반에서 RTSP 영상 재생 방법



통신이 발달됨에 따라 대한민국에서는 스마트폰 하나만 있으면 언제 어디서든지 인터넷을 사용할 수 있게 되었다. 스마트폰에서 인터넷이 된다는 의미는 컴퓨터로 볼 수 있는 RTSP 영상을 스마트폰으로도 볼 수 있다는 것이다. 스마트폰에서 RTSP 영상을 보기 위해서는 컴퓨터(윈도우기반)에서 RTSP 영상을 재생 시켰던 것과 동일하게 RTSP 클라이언트 앱을 설치하면 된다.

필자는 안드로이드 기반의 스마트폰을 사용하고 있기 때문에 안드로이드에서 사용 가능한 RTSP 앱을 소개하려고 한다. iOS 기반의 스마트폰(아이폰) 유저들은 iOS 용 RTSP 플레이어를 설치한 후 URL 설정만 잘 하면 동일하게 RTSP 영상을 재생시킬 수 있을 것이다.

필자가 선택한, RTSP 플레이어는 DafangCam - RTSP Player 라는 앱이다. 필자가 DafangCam 앱을 선택한 이유는 무료 앱이면서 광고가 없는 앱이다. 또한, 화면 회전을 지원하여 가로 화면으로 영상을 확인할 수 있는 장점이 있다.

[그림5] DafangCam - RTSP Player 설치[그림5] DafangCam - RTSP Player 설치


플레이스토어에서 DafangCam 을 검색하여 설치를 진행한다.


[그림6] DafangCam - RTSP Player 설정 #1[그림6] DafangCam - RTSP Player 설정 #1




DafangCam - RTSP Player 를 실행하고 우측 하단에 + 버튼을 눌러 CAM을 등록(RTSP URL 등록)한다.


[그림7] DafangCam - RTSP Player 설정 #2[그림7] DafangCam - RTSP Player 설정 #2


캠 이름을 설정하고 RTSP URL 을 입력한 후 UPDATE 버튼을 누른다.

[그림8] DafangCam - RTSP Player 에서 영상 재생 화면[그림8] DafangCam - RTSP Player 에서 영상 재생 화면


추가된 캠을 선택하면, [그림8]과 같이 영상이 재생된다.


04. 마무리



본 포스팅에서는 RTSP 영상을 재생하는 방법에 대해서 확인해 보았다. 알고나면 쉬운 과정이지만, RTSP 영상을 재생하는 방법에 대해 모르고 있었다면 생각보다 많은 시간을 사용해야하는 부분 중에 하나이다. 특히 모바일에서 RTSP 영상을 재생하는 앱을 찾기 위해서는 여러 앱을 설치해 가면서 나에게 맞는 앱을 선택해야 하는데, 필자가 소개한 DafangCam 앱인 경우 간편하면서도 많은 장점을 가지고 있는 앱이다.




RTSP 영상을 확인하는 방법까지 알았지만, 여기서 큰 문제점이 한 가지가 있다. 바로 내부 네트워크 상에서만 실시간 영상을 확인할 수 있다는 것이다. 다음 편에서는 공유기에서 DDNS 설정을 통해 외부에서도 영상을 확인할 수 있는 방법에 대해서 소개하려고 한다.

1편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #1)

2편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #2 - V4L2로 스트리밍 하기)

4편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #4 - CVLC 자동실행)

5편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #5 - DDNS와 Port Forwarding 설정)

6편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #6 - ffmpeg와 crontab을 이용한 녹화 기능 구현)

7편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #7 - 녹화 영상에 시간 넣기)


2018년 11월 28일
Kunttang


반응형
블로그 이미지

매깡

- 각종 문의는 메일로 해주세요. 메일: soriel01@nate.com

,
반응형


00. 링크


[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #1

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #2 - V4L2로 스트리밍 하기 <= (현재글)

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #3 - RTSP 클라이언트

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #4 - CVLC 자동실행

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #5 - DDNS와 Port Forwarding 설정

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #6 - ffmpeg와 crontab을 이용한 녹화 기능 구현

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #7 - 녹화 영상에 시간 넣기




01. 아날로그 영상의 스트리밍을 위한 설계



[그림1] 아날로그 CCTV 카메라[그림1] 아날로그 CCTV 카메라


1편에서 DVR을 위한 H/W 준비를 모두 마쳤다. V4L2(Video 4 Linux Version 2)를 통하여 아날로그 영상을 입력받아 VLC 플레이어로 영상을 출력하는 것 까지 확인이 되었으니, 다음 단계는 언제 어디서든지 영상을 실시간으로 확인할 수 있도록 스트리밍 서버를 구축하는 것이다.

[그림1]은 실제 JunWrap(http://www.junwrap.co.kr) 매장의 밖에 설치할 외부용 CCTV 카메라이다.

[그림2] JunWrap 네트워크 구성도[그림2] JunWrap 네트워크 구성도


[그림2]의 구성도에서 빨간색 원으로 표시한 카메라가 아날로그 카메라이다. ipCAM1 과 ipCAM2 인경우 RTSP 를 지원기 때문에 별도의 스트리밍을 구현할 필요가 없지만, 아날로그 카메라인 경우 서버에서 V4L2 로 영상의 디지털 변환 과정을 진행하고, 변환된 디지털 영상 파일을 스트리밍 할 수 있도록 구현해야 한다.

 

[그림3] 스트리밍 서버의 구성도[그림3] 스트리밍 서버의 구성도


[그림3]은 Analog CAM으로 부터 입력된 영상을 디지털화하여 Streaming 하는 Server의 구조를 그린 것이다. /dev/video0(V4L2)로 부터 입력된 영상을 VLC 플레이어를 통해 Streaming 하는 아주 간단한 아이디어이다. 다만, 스크립트로 스트리밍이 실행되어야 하기 때문에 GUI 기반의 VLC 플레이어가 아닌 콘솔 기반의 CVLC 를 사용하게 된다.

CVLC는 콘솔에서 Command로 실행해야 하는 구조이기 때문에 파라미터를 구해야 한다. 파라미터는 VLC에서 구할 수 있다.




02. CVLC를 위한 파라미터 추출



이미 본 포스팅의 1편에서 V4L2를 이용하여 /dev/video0의 영상을 VLC 플레이어를 통해 확인했었다. 그럼 이 영상을 CVLC에서 입력받아 스트리밍 할 수있도록 Command를 완성하면 된다. 참고로 VLC에는 미디어 스트리밍 기능이 포함되어 있다.

[그림4] VLC 디버그 메시지창 실행 #1[그림4] VLC 디버그 메시지창 실행 #1


[그림5] VLC 디버그 메시지창 실행 #2[그림5] VLC 디버그 메시지창 실행 #2


[그림4]와 [그림5]를 통해 VLC 실행과정의 디버그 메시지를 실시간으로 확인할 수 있다. [그림5]의 상세출력 부분을 2(디버그) 로 설정해야만 실행 커맨드를 확인할 수 있다.

메시지 창을 그대로 둔 채, VLC 창에서 Streaming 을 위한 설정을 진행해 본다.


[그림6] VLC의 스트림 방법 #1[그림6] VLC의 스트림 방법 #1


[그림7] VLC의 스트림 방법 #2[그림7] VLC의 스트림 방법 #2


[그림6]과 [그림7]의 과정을 통해, V4L2 영상의 입력부를 설정한다. 이 과정에서 입력에 대한 파라미터를 구할 수 있다. 

[그림7]에서 비디오 장치 이름을 /dev/video0(장치에 따라 달라질 수 있음)으로 설정하고, 카메라에 맞게 비디오 표준부를 설정한다.

[그림7]의 미디어열기 창에서 "추가 옵션 보기(M)"을 체크하게 되면 하단에 MRL옵션수정 항목이 표시되어진다. MRL 부분을 복사해 놓는다. 영상의 세부 설정을 위해서는 옵션수정항목도 필요로 하지만, MRL 만으로도 스트리밍을 위한 입력부 기본 준비가 끝난다.


[그림8] VLC의 스트림 방법 #3[그림8] VLC의 스트림 방법 #3


[그림7]에서 하단의 스트림 버튼을 누르게 되면, [그림8]과 같이 다음 화면으로 넘어가게 된다. 다음 버튼을 클릭하여 넘어간다.

[그림9] VLC의 스트림 방법 #4[그림9] VLC의 스트림 방법 #4




[그림9] 부터는 스트리밍을 위한 설정을 하는 화면이다. [그림7]과 [그림8]이 영상의 입력부이고, [그림9]부터는 영상 출력부를 설정하는 것이다.

새 목적지를 RTSP로 설정한다. RTSP(Real-Time Streaming Protocol)는 1편에서 간단히 소개가 되어있다. 참고하기 바란다. RTSP를 선택하고, 꼭 오른쪽의 추가 버튼을 클릭해야 한다.

[그림10] VLC의 스트림 방법 #5[그림10] VLC의 스트림 방법 #5


[그림10]은 RTSP를 위한 포트설정과 경로 설정을 하는 화면이다. 이 화면에서 잘 설정을 해야만, RTSP 의 URL을 완성시킬 수 있다.

필자는 포트를 8554로 설정하고, 경로를 /test.sdp 로 설정하였다. 외부에서 접속할 때, Router 단의 Port Forwarding 을 설정할 예정이기 때문에 RTSP의 표준 포트인 8554를 기본을 사용했다.

[그림11] VLC의 스트림 방법 #6[그림11] VLC의 스트림 방법 #6


[그림11]은 스트리밍 데이터의 영상코덱을 설정하는 화면이다. 필자는 H.264를 선택하였다.


[그림12] VLC의 스트림 방법 #7[그림12] VLC의 스트림 방법 #7


[그림12]와 같이 최종 스트림 문자열이 표시가 되어진다. "생성된 스트림 출력 문자열" 의 내용을 잘 복사해 놓는다. 스트림 버튼을 눌러 스트리밍을 시작해 본다.

[그림13] VLC의 스트림 방법 #8[그림13] VLC의 스트림 방법 #8


메시지 창을 살펴보게 되면, 각종 디버그 메시지들이 출력된다. [그림7]과 [그림12]에서 추출한 문자열이 메시지창에 잘 표시되고, 스트리밍이 잘 시작 되었는지를 확인한다. 문제 없이 스트리밍이 시작되었다면, CVLC를 위한 Command를 작성해 본다. 하기 Command는 필자가 완성한 cvlc command이다.





cvlc "v4l2:///dev/video0" --v4l2-input=0 --v4l2-standard=MN --live-caching=300 --sout=#transcode'{vcodec=h264,scale=자동,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/test.sdp}' --sout-keep


위의 커맨드를 콘솔에서 실행시켜 본다.

[그림14] CVLC 실행[그림14] CVLC 실행


[그림14]와 같이 빨간색 스트링 없이 실행이 되면 정상적으로 스트림이 시작 된 것이다.


03. 마무리



Analog 영상을 V4L2 를 통해 입력받고, CVLC를 통해 스트리밍 하는 방법까지 작성을 하였다. 다음 포스팅에서는 스트리밍 영상을 휴대폰에서 확인하는 방법에 대해서 작성할 예정이다.


1편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #1)

3편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #3 - RTSP 클라이언트)

4편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #4 - CVLC 자동실행)

5편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #5 - DDNS와 Port Forwarding 설정)

6편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #6 - ffmpeg와 crontab을 이용한 녹화 기능 구현)

7편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #7 - 녹화 영상에 시간 넣기)





2018년 11월 27일
Kunttang

반응형
블로그 이미지

매깡

- 각종 문의는 메일로 해주세요. 메일: soriel01@nate.com

,
반응형


00. 링크


[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #1 <= (현재글)

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #2 - V4L2로 스트리밍 하기

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #3 - RTSP 클라이언트

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #4 - CVLC 자동실행

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #5 - DDNS와 Port Forwarding 설정

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #6 - ffmpeg와 crontab을 이용한 녹화 기능 구현

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #7 - 녹화 영상에 시간 넣기




01. DVR이란 무엇인가?



요즘은 어딜가든 CCTV가 설치되어있다. 길거리 혹은 실내에서 잘못된 행동을 하게 되면 그 행동이 고스란히 영상으로 기록이된다. 심지어 차량의 블랙박스에서 까지 나의 행동을 녹화하고 있으니 죄 짓고 살기 힘든 세상이다.

아무리 카메라가 좋아도 영상을 기록할 장치가 없다면 그 카메라의 역할은 실시간 감시뿐이 없다. 하지만, DVR 이라는 영상을 기록하는 장치가 카메라와 함께 운용된다면 하나의 감시 기록 시스템으로 확장하게 된다.




DVR은 Digital Video Recorder 의 약자로 말 그대로 녹화장치이다. 불과 10~20년전까지만 하더라도 녹화장치는 자기테이프 기록장치를 주로 사용하여, 관리자가 주기적으로 테이프를 교환해 주며 운용을 하였지만 최근에는 자기기록장치와 영상처리기술의 발달로 하드디스크가 내장된 DVR이라는 녹화기가 CCTV 시스템의 중심이 되었다.


02. DVR 시스템의 필요성



필자는 직장인으로 개인적으로 DVR 시스템의 필요성을 느끼지 못한다. 필자가 가지고 있는 DVR 시스템이라고 해 봤자 차량의 블랙박스가 전부이다.

하루는 친구가 운영하고 있는 자동차, 바이크 랩핑샵(http://www.junwrap.co.kr)에 놀러갔는데 친구의 차량에 심한 상처가 난 것을 발견하였다. 옆 식당에 온 손님이 문을 심하게 열어 발생한 상처로 추정되어지나 직접적인 증거가 없어 보상을 받을 방법이 없었다. 만약 상처가 난 차량이 친구가 운영하고 있는 샾에 방문한 손님 차량이라면 고스란히 친구가 보상을 해줘야 하는 상황이었다.

어찌어찌하여 DVR을 만들어 실시간 녹화를 하기로 결정하였다. 보안업체의 CCTV도 알아보았으나 월 20,000원정도의 유지비용이 발생하는 부분으로 비용절감을 위해 일단 만들어보기로 한다.


03. 환경



- 보안 업체의 월 20,000원 정도의 CCTV는 다음과 같은 구성으로 되어있다.

a. HD급 카메라(적외선 포함) 2대

b. DVR 1대

- 보안 업체에서 제공하는 CCTV는 다음과 같은 특징을 가지고 있다.

c. 모바일로 언제든지 CCTV를 확인할 수 있는 기능

d. 녹화




기타 동작감지라던지 소소한 추가 기능들이 있지만, 보안업체 CCTV의 대표적인 기능 위주로 개발을 해 보려고 한다.


[그림1] JunWrap 네트워크 구성도[그림1] JunWrap 네트워크 구성도


[그림1]은 현재의 JunWrap(http://www.junwrap.co.kr) 네트워크환경에 Server와 CAM 을 추가한 구성도 이다. 이미 2년 전 JunWrap 을 개업했을 당시 네트워크 작업을 진행해 주었다. 기가비트 네트워크 환경을 구성하였기 때문에 내부 네트워크의 파일 공유속도는 엄청나게 빠르다. 다만, 현재까지 NAS 혹은 파일 서버의 역할을 하는 장비가 없었기 때문에 기가비트의 네트워크 환경을 제대로 이용할 기회가 없었을 뿐이다.

ipCAM1과 ipCAM2는 네트워크 기능이 포함된 실내 전용 카메라로 RTSP(Real-Time Streaming Protocol)가 내장된 카메라이다. 저조도에서는 적외선 광원이 자동으로 켜지게 되어 있어 밤의 영상도 확인이 가능하다. RTSP 로 인해 실시간 영상확인이 가능하다.

Analog CAM은 수년 전 저가 보안업체에서 사용하던 아날로그 Type의 실외용 카메라이다.


04. 서버 구성



ipCAM1과 ipCAM2는 RTSP가 내장되어있기 때문에 스트리밍을 위한 별도의 작업은 필요하지 않으나, AnalogCAM은 스트리밍을 위해 여러 작업이 동반되어야 한다. 일단, AnalogCAM 의 영상의 디지털화를 위한 캡쳐보드가 필요하고, 캡쳐보드를 구동하기 위한 컴퓨터가 필요하다. 


[그림2] 캡쳐보드(자이뷰 XV400 PCI)[그림2] 캡쳐보드(자이뷰 XV400 PCI)


캡쳐보드로는 자이뷰 XV400 PCI(XyVision)를 선택하였다. 사실 이 보드는 2000년대 중반부터 컴퓨터 DVR 시스템을 위한 필수보드로 아직까지도 판매가 되고 있는 보드이다. 새제품인 경우 4~5만원대의 가격을 가지고 있으나, 중고 1만원 대의 가격으로 구입을 할 수 있는 보드이다. 하지만, 이 보드에는 치명적인 단점이 2가지가 있다.




단점 1. PCI 방식이다. 이미 5~6년 전부터 메인보드에 PCI 슬롯을 가지고 있는 컴퓨터는 산업용 컴퓨터를 제외하고는 찾아보기 힘들다.

단점 2. 자이뷰 XV400 PCI 를 사용하기 위해서는 컴퓨터에 드라이버 설치 및 전용 DVR 프로그램을 설치해야하는데, Windows XP에 최적화가 되어있다.(Windows 7 32bit 까지 지원되긴 하지만, 매끄럽게 동작하질 않는다.)

만약 집에서 사용하지 않는 오래된 컴퓨터가 있다면, 단점 1과 2는 장점(?)이 되어버린다. 필자는 이미 사용하지 않는 오래된 컴퓨터로 서버를 준비해 놓았다. 여기까지는 정말 순조롭게 진행이 되었다.

www.xysystem.com 에 접속하여 전용 프로그램을 확인해 보니, 시리얼을 등록해야 사용할 수 있다고 한다. 졸지에 단점 3이 생기는 순간이었다. 시리얼은 별도로 인터넷을 통해 1~2만원대에 구입을 할 수 있지만, 필자는 단점 2로 인하여 구입하고 싶은 생각이 전혀 없었다.

일단, 윈도우 XP에 안정화가 되어있기 때문에 MS에서 지원조차 받지 못하는 운영체제를 서버로 운용하고 싶지 않았다.

[그림3] XV400 PCI의 메인칩(Conexant FUSION 878A)[그림3] XV400 PCI의 메인칩(Conexant FUSION 878A)


XV400 PCI 에 사용된 메인 칩을 확인해보니, Conexant Fusion 878A 를 사용하고 있었다. 리눅스를 사용한다면, 별도의 작업 없이 충분히 사용 가능할 것으로 예상이 되었다. 최근에 Release 된 데비안 계열의 리눅스에서는 V4L(Video4Linux)을 사용할 수 있다. V4L 은 리눅스에서 Video Capture 장치를 Load 하기 위한 드라이버와 API 들의 집합이다.

그래서 결정된 운영체제는 Linux Mint 19 Tara 64-bit Xfce 이다. Linux Mint 19 Tara 는 LTS(Long term support release)로 2023년 4월까지 지원이 가능한 리눅스 배포판이다. 서버 사양이 좋지 않으므로, 적은 리소스로 구동이 가능한 Xfce 로 결정을 하였다.

[그림4] 서버를 위한 컴퓨터 부품 가조립[그림4] 서버를 위한 컴퓨터 부품 가조립


창고에 정리해 놓은 부품들 중에 적합한 부품들을 하나하나 모아보았다. 일단, 창고에 오래 보관된 부품으로 메인보드 수은전지를 교체하고, 각 부품들을 가조립한 상태에서 확인을 해 보았다. 이미 창고에 들어가기 전에 정상 동작을 확인했던 부품이었기 때문에 문제없이 작동이 된다.

[그림5] 서버로 사용될 컴퓨터의 사양[그림5] 서버로 사용될 컴퓨터의 사양


골동품 중에 골동품이다. 하지만, 부품들의 상태가 좋아서 몇 년째 창고에 보관 중이었던 부품이다. Intel Dual-Core E6300 제품으로 윈도우 설치를 하여서는 정상적인 사용이 불가능할 정도의 사양이다. 메모리는 DDR2 2GByte + 1GByte 조합의 3GByte 로 구성을 하였고 하드디스크는 500GB 로 구성하였다. DVR 로 사용할 서버이기 때문에 하드디스크는 사용시간이 짧은 부품으로 장착을 하였다.




[그림6] 조립 완료 및 기가비트 랜카드와 캡쳐보드 사진[그림6] 조립 완료 및 기가비트 랜카드와 캡쳐보드 사진


창고에 있는 비교적 깨끗한 케이스를 꺼내어 조립을 완료하였다. 조립을 하다보니, 확인이 덜 된 부분이 있었는데 바로 이더넷의 지원 속도였다. ASUS P5KPL-AM SE 보드인 경우 10/100Mb 속도의 이더넷을 장착하고 있기 때문에 스트리밍과, 녹화의 기능을 수행하고, Samba 서버 역할을 하기위한 네트워크 대역폭으로는 부족한면이 있었다.

그래서, PCI-Ex 방식의 기가비트 카드를 추가하였다. 기가비트 랜카드의 리뷰는 하기 포스팅을 참고하기 바란다.

Coms PCIEx 기가비트 랜카드 리뷰Coms PCIEx 기가비트 랜카드 리뷰


[그림7] Power Loss 설정[그림7] Power Loss 설정


서버는 입력장치(키보드,마우스)와 모니터를 장착하지 않고 사용하기 때문에 건물의 전기부분에 문제가 발생 후 복구가 되었을 시 자동으로 켜지게 해야한다. 바이오스 셋업 화면에서 간단히 설정이 가능하다. Restore on AC Power Loss 항목을 Power On 으로 설정하면 전원이 입력됨과 동시에 자동으로 켜지게 된다.


[그림8] 리눅스 설치 완료 화면[그림8] 리눅스 설치 완료 화면


리눅스 민트 19 Tara 설치까지 완료된 화면이다. 이젠 DVR 구성을 위한 개발을 시작하면 된다.

[그림9] 캡쳐보드 테스트에 사용된 Minicube X7+ Android[그림9] 캡쳐보드 테스트에 사용된 Minicube X7+ Android




리눅스에서 캡쳐보드가 정상작동하는지 확인해 보기위해 RCA 케이블로 집에 있는 동영상 셋톱박스를 연결해 보았다. 불과 몇 년 전까지만 하더라도 RCA 출력이 되는 장비 몇 개는 쉽게 찾아볼 수 있었지만, 창고를 아무리 뒤적뒤적해도 RCA 출력을 위한 장비가 없었다. 다행스럽게도 딱 하나가 나왔는데 기본 HDMI 출력이지만 Display Menu 에서 PAL 및 NTSC 출력 설정을 통해 RCA 출력을 할 수 있는 셋톱박스를 찾게 되어 설정한 후 연결해 보았다.


[그림10] VLC 에서 캡쳐장치 열기[그림10] VLC 에서 캡쳐장치 열기


테스트를 위하여 VLC 플레이어에서 캡쳐장치를 열어보았다.


[그림11] VLC에서 인식된 캡쳐장치(/dev/video0)[그림11] VLC에서 인식된 캡쳐장치(/dev/video0)


VLC 플레이어에서 캡쳐장치가 정상적으로 인식되어 있는 것을 확인할 수 있었다. 재생 버튼을 눌러 영상이 표시되는지를 확인한다.


[그림12] VLC에 출력된 화면[그림12] VLC에 출력된 화면


정상적으로 VLC에 화면이 출력되었다. 셋톱박스에서 출력되는 비디오타입과 VLC의 설정이 정상적이지 못해 화면이 깔끔하지 못하지만, 캡쳐보드가 정상적으로 출력되는 것을 확인할 수 있다. 아날로그 카메라를 연결하여 확인해 봐야 할 것 같다.




05. 마무리



DVR 시스템을 개발하기 위한 모든 준비는 끝났다. 이젠 다음과 같은 기능을 구현하면 된다.

a. 서버 부팅과 동시에 녹화 시작
   - ipCAM1, ipCAM2, AnalogCAM

b. AnalogCAM 스트리밍(RTSP 구성)

c. Samba 설정

d. 1분단위로 끊어서 녹화하는 기능

e. 특정 시간이 지나면 자동으로 삭제되는 기능

f. 영상에 시스템 시간과 CAM 이름이 삽입되는 기능

이 모든 기능이 어떠한 코딩으로 이루어지는 것이 당연하겠지만, 필자는 쉘스크립트, 콘솔 프로그램, 시스템 설정을 통해 DVR 을 개발하려고 한다.

개발이라고 말하기 부끄러울만큼의 구성이지만, 위와 같은 간단한 기능을 코딩으로 개발하는 것보다 훨씬 간편할 것으로 예상된다.

다음 포스팅에서는 캡쳐보드로 입력된 AnalogCAM 영상의 스트리밍 방법을 작성할 예정이다.


2편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #2 - V4L2로 스트리밍 하기)

3편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #3 - RTSP 클라이언트)

4편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #4 - CVLC 자동실행)

5편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #5 - DDNS와 Port Forwarding 설정)

6편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #6 - ffmpeg와 crontab을 이용한 녹화 기능 구현)

7편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #7 - 녹화 영상에 시간 넣기)


2018년 11월 26일
Kunttang

반응형
블로그 이미지

매깡

- 각종 문의는 메일로 해주세요. 메일: soriel01@nate.com

,