반응형


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. 개요



5편까지는 스트리밍관련한 내용을 소개를 하였다. 하지만, 본 포스팅의 본질은 DVR 을 만드는 것이다. 지금까지 소개했던 모든 기능은 DVR을 위한 기반작업이라고 생각하면 된다.

이번 6편에서는 ffmpeg 와 crontab을 이용하여 스트리밍 영상의 녹화 방법을 기술할 예정이다. 2편, 4편의 내용은 아날로그 카메라의 영상을 RTSP 로 스트리밍하는 방법에 대해 소개한 내용이므로, RTSP가 지원되는 IP 카메라를 이용한 DVR을 만들기 위해 필자의 글을 참고하시는 분은 2편과 4편의 내용은 참고를 하지 않아도 된다.

1편 부터 현재까지의 과정을 잘 수행했다면, 현 시점 부터의 모든 입력 영상은 스트리밍(RTSP) 영상이다. 즉 모든 데이터는 디지털 데이터이다.


02. ffmpeg



ffmpeg 란 디지털 미디어파일(동영상, 음악, 사진)의 디코딩 또는 인코딩을 위해 다양한 기능을 제공하는 오픈소스 프로젝트이다. ffmpeg의 ff는 fast forward 를 의미한다. mpeg 는 MPEG 영상 표준화 그룹에서 유래했다고 한다.

우리가 사용하는 대부분의 동영상 플레이어들은 ffmpeg 기반으로 제작되었다. 즉, ffmpeg 가 LGPL 라이선스를 가지고 있는 오픈소스진영의 무료 프로젝트이지만, 만약 유료화한다면 그 시점부터 동영상을 감상하지 못하는 일이 발생할 수도 있다.(하지만, 오픈소스프로젝트는 그럴일이 거의 없으니 걱정 안해도 된다.)

ffmpeg에서는 다양한 기능들을 제공하지만, 본 포스팅에서는 ffmpeg의 미디어 포멧 변환 도구를 활용하여 스트리밍 영상을 h.264 형식의 mp4 동영상 파일로 저장하려고 한다.


[그림1] FFmpeg 로고[그림1] FFmpeg 로고


03. Crontab



Cron은 유닉스 혹은 리눅스 운영체제에서 사용하는 스케줄러이다. Crontab 은 Cron + Table의 조합으로 만들어진 이름이다.

Crontab을 이용하면 주어진 일정에 주기적으로 쉘 명령어들을 실행할 수 있다.




이미 4편에서 잠시 소개한 명령어이다.(4편에서는 주기적인 실행이 아닌, 부팅이 되면 자동 실행을 할 수 있는 @reboot 명령을 소개 했었다.)

본 포스팅에서는 Crontab 의 스케줄링 기능을 활용하여 1분 마다 미리 만들어 놓은 ffmpeg 스크립트(60초 녹화)를 실행하고, 하루에 한 번씩 특정 시간에 오래된 영상을 자동으로 지워주는 스크립트를 실행하는 방법을 소개할 예정이다.



04. 녹화


04-01. ffmpeg의 설치



필자의 DVR 만들기를 소개하는 포스팅은 Linux Mint 19 Tara 기반으로 작성되고 있다. 따라서 ffmpeg의 설치는 apt-get 을 활용하여 설치한다.


sudo apt-get install ffmpeg


리눅스의 터미널에 위와 같이 실행하면 ffmpeg 가 설치된다.

[그림2] FFmpeg 설치화면[그림2] FFmpeg 설치화면


04-02. RTSP 스트리밍 영상을 파일로 저장하는 방법



ffmpeg 를 사용하기 위해서는 사용 방법을 알아야 한다. ffmpeg 명령어에 옵션을 사용해서 원하는 영상을 녹화할 수 있다. 옵션에 대한 자세한 내용은 나무위키의 FFmpeg 4.4절을 참고하면 된다.

필자는 간단히 다음과 같은 명령어를 구성하였다.


ffmpeg -i "rtsp://192.168.219.112:8554/test.sdp" '/home/junwrap/smbroot/[test]Video1.mp4'


-i 옵션은 입력파일을 지정하는 옵션이다. -i 이후에 "rtsp://192.168.219.112:8554/test.sdp" 라는 스트링이 붙었으니, 스트리밍 영상을 입력으로 사용하겠다는 의미이다. 그 뒤에 따라 붙는 '/home/junwrap/smbroot/[test]Video1.mp4' 라는 스트링은 저장 파일을 지정한 것이다.

[그림3] ffmpeg를 이용하여 스트리밍 영상을 파일로 저장하고 있는 화면[그림3] ffmpeg를 이용하여 스트리밍 영상을 파일로 저장하고 있는 화면


약 40초간 녹화를 진행한 후 파일을 확인해 본다.




[그림4] 녹화 결과물[그림4] 녹화 결과물


[그림4] 와 같이 녹화가 잘 진행 된 것을 확인 할 수 있다.



04-03. 1분단위로 녹화를 하는 방법



스트리밍 영상이 파일로 저장되는 것 까지 확인을 했으니, 본격적으로 1분단위로 녹화를 하는 방법에 대해서 기술한다. CCTV 영상은 파일을 특정시간 단위로 분할하여 저장하는 것이 추후 확인하기도 좋고, 파일의 손상에 의한 녹화물 손실을 막을 수 있다.

ffmpeg 옵션 중에는 -t 옵션이 있다. 인코딩 시간을 초 단위로 지정하는 옵션이다. 하기와 같이 명령어를 수정하였다.


ffmpeg -i "rtsp://192.168.219.112:8554/test.sdp" -t 60 -an '/home/junwrap/smbroot/[test]Video1.mp4'


-an 옵션은 오디오를 끄는 옵션이다. CCTV 영상이기 때문에 오디오를 사용하지 않아 오디오를 Off 시켰다.

60초동안 인코딩이 잘 되고 종료되는지를 확인해 본다.


[그림5] 59.9초 녹화된 결과 로그[그림5] 59.9초 녹화된 결과 로그


[그림5] 와 같이 59.90초가 녹화된 것을 확인할 수 있다. 프레임 수에 따른 계산이기 때문에 정확히 60초가 나오지 않을 수 있다.


[그림6] 1분 동안 녹화된 파일의 사이즈[그림6] 1분 동안 녹화된 파일의 사이즈


[그림6]에서 보면 1분동안 녹화된 파일의 사이즈(480x320 30fps 기준)는 약 2MB 정도이다. 24시간 녹화시 약 3GB 정도의 용량이 필요한 것을 확인할 수 있다.(물론 움직임이 많거나, 주변 상황에 따라서 용량은 달라질 수 있다.)

컴퓨터를 구성할 때, 400GB 정도를 home 영역으로 잡고, 이 공간에 저장할 수 있게 구성할 예정이니 130일 이상의 영상을 저장할 수 있다.(다른 카메라의 녹화도 병행해야 하기 때문에 130일까지 저장하지는 않을 것이다.)



04-04. 매 1분 마다 영상 저장을 실행 하는 방법



04-03에서 1분 단위 녹화의 가능성을 확인했다. 매 1분 마다 녹화를 진행해야 하는데, 1분 마다 수행할 수 있도록 해당 명령어을 crontab에 지정하면 간단하지만 파일명이 같으면 안된다. 따라서, 파일명이 변경되는 쉘 스크립트를 작성해 본다. 이 스크립트가 crontab에 지정될 것이다.





  #!/bin/sh

   YEAR=$(date +\%Y)
   MON=$(date +\%m)
   DAY=$(date +\%d)
   HOUR=$(date +\%H)
   MIN=$(date +\%M)
   SEC=$(date +\%S)

   DATESTRING=/home/junwrap/smbroot/"(""$YEAR""$MON""$DAY"")"_"$HOUR"h"$MIN"m"$SEC"s".mp4"

   ffmpeg -i "rtsp://192.168.219.112:8554/test.sdp" -t 60 -an $DATESTRING



필자는 dvr.sh 라는 파일로 저장한 후 실행 권한을 주었다. 간단히 "sudo chmod 755 dvr.sh" 를 사용하면 된다. 위의 스크립트는 현재 시스템 시간 기준으로 "년, 월, 일, 시, 분, 초" 를 구하여, CCTV 영상의 파일명으로 사용하는 스크립트이다. 매 1분마다 새로운 파일명이 생성되어 영상이 저장될 것이다.

만들어진 스크립트를 crontab 에 등록한다.

crontab 에 등록하는 방법은 crontab -e 이다.


*/1 * * * * /home/junwrap/dvr.sh


필자는 crontab에 [그림7]과 같이 추가를 하였다. 매 1분마다 dvr.sh 를 실행하라는 뜻이다.


[그림7] crontab에 dvr.sh 스크립트 등록화면[그림7] crontab에 dvr.sh 스크립트 등록화면


여기서 crontab에 대해서 잠깐 설명하도록 한다.

crontab의 반복스케쥴링 형식은 하기와 같이 총 6개의 항목으로 되어있다.


*(1)
*(2) *(3) *(4) *(5) [명령](6)


(1) 시간의 분을 명기하는 자리이다. 0~59 의 숫자를 사용할 수 있고, */1 처럼 사용할 수 있다.
     */1의 의미는 1분마다 명령을 수행하라는 것이다.

(2) 시간의 시를 명기하는 자리이다. 0~23의 숫자를 사용할 수 있고, 분과 마찮가지로 */1 처럼 사용할 수 있다.

(3) 날짜의 일을 명기하는 자리이다. 1~31의 숫자를 사용할 수 있다.

(4) 날짜의 월을 명기하는 자리이다. 1~12의 숫자를 사용할 수 있다.

(5) 요일을 명기하는 자리이다. 0~7의 숫자를 사용할 수 있다.(0과 7은 일요일)

(6) (1 ~ 5) 의 스케줄에 맞게 실행할 스크립트 혹은 커맨드이다.


[그림8] 분 단위로 저장되고 있는 화면[그림8] 분 단위로 저장되고 있는 화면


[그림8] 처럼 1분 단위의 날짜, 시간 파일명으로 잘 저장되고 있다.


04-05. 오래된 영상 자동 삭제 방법



하드디스크의 용량은 제한적이기 때문에 영상을 무한히 저장할 수 없다. 따라서 특정 시일이 지난 영상은 자동으로 삭제해 주는 기능을 구현해야 한다. 간단히 find 명령어와 rm 명령어의 조합으로 파일 생성일 기준 원하는 기간 이전의 데이터를 삭제하는 명령어를 crontab에 등록하도록 한다.

find 명령어는 리눅스에서 파일을 찾는 명령어이다. find 명령어의 옵션 중 -mtime 라는 옵션이 있는데 시스템 시간 기준으로 mtime(일 단위) 전의 파일을 찾는 옵션이다.


find /home/junwrap/smbroot/ -mtime +3


위의 커맨드는 시스템 시간 기준 3일 이전의 데이터를 /home/junwrap 하위디렉터리로 검색하라는 명령어이다.




[그림9] /home/junwrap/smbroot/ 디렉터리의 파일 리스트[그림9] /home/junwrap/smbroot/ 디렉터리의 파일 리스트


포스팅을 하고 있는 현재 시간은 2018년 12월 5일 이다. [그림9]은 /home/junwrap/smbroot/ 디렉터리의 파일 리스트이다. cvlc.txt 파일만 2018년 11월 28일에 만들어진 파일이다. find 명령어에 -mtime 옵션을 사용하여 검색을 해 보도록 한다.


[그림10] find 검색 결과(mtime 옵션 사용)[그림10] find 검색 결과(mtime 옵션 사용)

[그림10]은 mtime 옵션을 사용하여 find 한 결과 화면이다. [그림9] 의 12월 5일 파일들을 제외한 현 시간(12월 5일) 기준 3일 이전의 데이터인 cvlc.txt 만을 결과 값으로 출력을 해 주고 있다.

좀 더 자세히 확인하고 싶으면 touch 명령어로 파일의 생성시간 조작을 하여 테스트를 해 보면 된다.


find 로 찾은 결과 파일들을 삭제해야 하는데 rm 명령어를 사용하면 된다. 다만, find 와 rm 명령어는 별개의 명령어이므로, find의 옵션 중 -exec 옵션을 사용한다. -exec 옵션은 find 로 찾은 결과 값을 실행할 명령어의 파라미터로 넘겨주는 옵션이다.


find /home/junwrap/smbroot/ -mtime +3 -exec rm {} \;


위의 명령을 사용하면 3일 이전에 생성된 파일들은 삭제가 될 것이다. 일 단위 기준이기 때문에 해당 명령을 crontab에는 하루에 한번 씩 작동하도록 등록한다. 필자는 매일 22시에 7일 전 데이터를 삭제하도록 crontab에 등록할 것이다.

위에서 했던 것 처럼 crontab -e 명령어로 crontab을 수정한다.


[그림11] crontab에 오래된 영상 삭제 스크립트 추가[그림11] crontab에 오래된 영상 삭제 스크립트 추가

[그림11]과 같이 crontab에 find와 rm 명령어의 조합을 추가하였다.





05. 마무리



본 편에서는 DVR 의 기본 기능에 대해 구현하는 방법을 소개하였다. 기본적으로 1분단위 파일 저장 방법, 날짜로 파일 명을 만드는 방법, 특정 시간이 지난 파일을 자동으로 삭제하는 방법 등을 가능한한 쉽게 설명을 하였다. 이젠 어느정도 DVR의 모습을 갖춰가고 있다. 하지만 아직 아쉬운 부분이 남아있다. 바로 영상에 삽입되는 시간정보인데, 아무리 파일명에 시간정보를 넣는다고 하더라도, 파일명은 쉽게 바꿀 수 있어 정확한 녹화의 날짜를 잃어버릴 위험이 있다. 따라서 다음 편에서는 ffmpeg 의 특정 옵션을 통해, 시스템 시간을 영상에 넣는 방법을 소개할 예정이다.


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

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

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

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

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

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



2018년 12월 5일
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편 ~ 4편 에 소개한 것처럼 아날로그 영상을 RTSP 로 스트리밍 할 수 있게 되었다. 하지만, 실시간 감시 시스템을 잘 만들어 놓고서는 외부에서 접속을 하지 못하는 상황이 발생된다면, 반쪽짜리 감시시스템이 될 것이다. 따라서 본 포스팅에서는 공유기의 DDNS와 Port Forwarding 기능을 통해 외부에서도 휴대폰이나 컴퓨터로 CCTV 영상을 실시간으로 감시할 수 있도록 하는 방법을 공유하려고 한다. 단, 다음과 같은 전제조건이 있다.


1. DDNS 설정이 가능한 공유기(필자는 iptime 공유기를 이용하였다.)

2. Port Forwarding 설정이 가능한 공유기(대부분의 공유기가 지원을 한다.)

3. Internet 모뎀 뒷편에 설치된 공유기(Internet 모뎀은 DHCP를 통해 꼭!! 공인 ip 를 받아와야 한다.)


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


[그림1]의 빨간색 박스 부분의 모양처럼 공유기가 위치해 있어야 한다. 


02. DDNS



사람들은 전 세계적으로 인터넷이라는 거대한 네트워크의 집합을 사용하게 된다. 이 네트워크에 참여를 하기 위해서는 IP 주소가 필요하다. 하지만, "255.255.255.255" 형식의 IPv4 모델은 현 시대에서는 ip주소의 부족 현상을 갖게 만든다. IPv4 기술이 1980년대에 설계된 것이다 보니, 그 때에는 지금과 같은 ip부족 현상을 예측하지 못했을 것이 당연할 것이다.




통신기술의 발전은 1인당 1개이상의 ip를 보유하게 만들었다. 현 시대에 살고 있는 사람들은 ip가 무엇인지 몰라도 ip를 보유하게 되었는데 대표적인 예가 스마트폰이다.

ip 부족 현상을 해결하기 위해 ip의 A클래스 부분에 특수 용도 주소(10.0.0.0, 172.16.0.0/12, 192.168.0.0/16)를 만들어 사설 네트워크로 사용할 수 있게 설계를 하기도 하였다. 이 경우가 우리가 사용하고 있는 공유기이다. 사설 네트워크는 1개의 인터넷 라인을 다수의 인터넷 라인으로 분배하여 사용하게 만드는 방법이다. 우리는 분명 인터넷 1회선을 통신업체에 신청하였지만, 공유기라는 장비를 통해 여러대의 장비를 인터넷에 참여 시킬 수 있다.

이러한 사설 네트워크는 1회선으로 다수의 장비를 운용할 수 있게 하는 엄청난 장점을 가지고 있지만, 내부 네트워크에서 외부네트워크로 나가게 되면 결국 해당회선의 ip를 이용하기 때문에 서버를 운용하기에는 적합하지 않은 구조가 되어버린다.

[그림2] 네트워크의 구조[그림2] 네트워크의 구조


[그림2]에서 살펴보면, 인터넷 업체에서 각 건물로 광케이블을 연결해 놓고, 건물에 각 호에서는 모뎀을 통해 공인 ip를 받아오는 구조가 된다. 이때, 모뎀 뒷단에 공유기를 연결하여 사설ip 영역을 구성하게 된다. 사설 ip 영역에서 인터넷의 사용은 가능하지만, 다른 곳에서 사설ip 영역의 특정 컴퓨터에 접근을 하기 위해서 외부에서는 참고할 수 있는 ip는 공인ip 뿐이 없다. 즉, 외부에서 [그림2] 의 192.168.0.4 컴퓨터에 접근을 시도하기 위해서는 211.205.43.2 라는 ip를 통해 들어와야한다는 것이다.

여기서 한 가지 문제가 발생한다. 101호에서 받는 공인 ip인 211.205.43.2 주소가 DHCP 동작에 의해 변경이 된다는 것이다. 부족한 ip 를 효율적으로 사용하기 위해 ISP 에서 주기적으로 ip 를 재할당하고 있는데 이렇게 되면 외부에서 찾아올 수 있는 주소가 바뀌게 되어 정상적으로 서버를 운용할 수 없게 되는 것이다.




이런 불편한 점을 해결하기 위해서 각 공유기를 개발하여 판매하는 업체에서는 DDNS(Dynamic Domain Name System) 라는 기능을 제공한다. DDNS 서비스는 공유기에 연결된 모뎀의 공인 IP를 공유기 업체의 sub 도메인에 연결시켜 주는 서비스이다. 연결만 해 주는 것이 아니라, 모뎀의 공인 IP 가 업데이트되었다는 것을 공유기가 인식하게 되면 공유기는 DDNS 서비스로 업데이트된 IP 를 알려주게되고, 서브도메인에 새로운 ip 를 업데이트 해 주게 된다. 따라서, DDNS의 도메인만 알고 있다면 외부에서 집의 공유기 까지의 연결이 가능해 지는 것이다.


[그림3] DDNS 의 간략 설명[그림3] DDNS 의 간략 설명


[그림3]은 DDNS를 설명하기 위해 간단히 그림으로 설명해 놓은 자료이다. 


1. 모뎀에서 211.205.43.2 ip를 통신회사로부터 받아와 공유기에 할당해 준다.

2. 공유기는 DDNS 서버에 kunttang 라는 이름의 공유기 ip는 211.205.43.2 라고 업데이트 요청을 한다.

3. DDNS 서버는 kunttang 는 211.205.43.2 ip가 연결되어있다고 DB에 저장한다.

   =======> 여기서 만약, 모뎀의 ip가 변경되면 공유기는 다시 2 ~ 3 과정을 진행하게 된다.

4. 어떤 외부 컴퓨터가 http://kunttang.iptime.org 를 입력한다.

5. 외부컴퓨터에 연결된 DNS 로부터 iptime.org 의 ip(142.111.22.11)주소를 응답받는다.

6. 142.111.22.11 주소로 요청한다.

7. DDNS 서버는 kunttang 의 서브도메인을 붙여 211.205.43.2 의 주소로 연결을 요청한다.



03. Port Forwarding



네트워크에서는 ip라는 주소를 제공하고 있지만, 실제 데이터의 이동 통로가 존재 한다. 이를 Port(포트)라고 한다. 필자가 포트를 설명하기 위해 설명하는 예가 있는데 바로 집이다.  "경기도 평택시 xxx동 aa번지" 라는 집에대한 주소가 있다면, 이 집에는 출입문이 1개 이상일 것이다. 주소가 ip가 되는 것이고, 건물의 문이 바로 포트가 되는 것이다.

네트워킹에서의 포트는 16bit Unsigned Integer형식으로 0~65535 까지 사용할 수 있다. 즉, ip 하나당 65535개의 포트가 존재한다는 것이다.

[그림2]에서 101호의 공인ip 211.205.43.2 는 0~65535 의 포트를 가지고 있는데 이는 공유기와 통신을 할 수 있는 65535개의 포트가 된다. 공유기에 연결된 사설 ip 를 가진 각 장치들도 65535개의 포트를 사용할 수 있게 된다.




Port Forwarding 이라는 기술을 사용하게 되면, 공인ip의 특정 포트와 사설ip 의 특정 포트를 연결시킬 수 있게 된다. 

예를들어 211.205.43.2 의 80포트를 통해 들어온 패킷을 192.168.0.3 의 9000번포트에 연결시켜놓게 되면 211.205.43.2:80 은 항상 192.168.0.3:9000 에 전달 되어지는 것이다.

DDNS와 Port Forwarding 을 적절히 이용하게 되면 집에서도 간단한 서버를 운용할 수 있게 되어진다.


[그림4] Port Forwarding[그림4] Port Forwarding


[그림4]은 Port Forwarding을 설명하기 위해 간단히 그림으로 설명해 놓은 자료이다. 


1. 외부에서 211.205.43.2 ip로 요청이 들어온다.

2. 모뎀은 공유기로 패킷을 전달한다.

3. 공유기는 포트를 확인하여, 공유기에 연결된 해당 기기로 패킷을 전달한다.
   ==> [그림4]에서 보면 80포트는 192.168.0.4:8080 으로 연결이 되어 있다.
   ==> 192.168.0.4 ip를 가진 기기의 8080포트로 패킷을 전달해주는 것이다.



04. 공유기 설정(DDNS 와 Port Forwarding)



대한민국에서 가장 많이 사용하고 있는 ipTime 공유기를 이용하여 DDNS 와 Port Forwarding 설정 방법을 설명하려고 한다. 위에서 설명한 DDNS 와 Port Forwarding 의 개념을 이해했다면 다른 공유기로도 충분히 설정할 수 있을 것이다.


[그림5] ipTime 관리도구 접속화면[그림5] ipTime 관리도구 접속화면


[그림5] 는 ipTime 의 관리도구 접속 화면이다. 별 다른 설정 없이 ipTime 공유기를 연결했다면, http://192.168.0.1 이 관리페이지 기본 주소이다.

관리도구 아이콘을 클릭한다.


[그림6] ipTime 공유기의 DDNS 설정화면[그림6] ipTime 공유기의 DDNS 설정화면


[그림6] 은 ipTime 관리페이지의 DDNS 설정 화면이다. 왼쪽 메뉴탐색기에서 "고급설정 -> 특수기능 -> DDNS 설정" 으로 진입 한다.

ipTime 공유기에서는 DDNS를 간편하게 등록할 수 있다. 사용하기 원하는 호스트 이름과, 사용자 ID(E-mail 주소)를 입력하게 되면 설정이 완료된다. 물론 호스트 이름은 다른 사람이 먼저 등록한 String 이라면 등록이 불가하다고 팝업이 표시된다.




정상 등록이 되면 접속상태에 정상등록이라고 표시가 된다. 아주 간단한 과정으로 DDNS 설정이 완료되었다.


[그림7] ipTime 공유기의 Port Forwarding 설정화면[그림7] ipTime 공유기의 Port Forwarding 설정화면


[그림7] 은 ipTime 관리페이지의 Port Forwarding 설정 화면이다. 왼쪽 메뉴탐색기에서 "고급설정 -> NAT/라우터 관리 -> 포트포워드 설정" 으로 진입 한다.

오른쪽 하단에 규칙을 설정하면 된다. [그림7]을 기반으로 설명해 본다.

1. test 라는 규칙이름을 추가한다.

2. 연결될 내부 IP를 지정한다.

3. 외부포트는 요청이 들어오는 포트이다.(18554로 설정하였다.)

4. 내부포트는 내부 IP에 요청할 포트이다.(8554로 설정하였다.)

  ==> 외부에서 나의 공인 IP의 18554 포트로 연결요청이 오면, 192.168.219.112:8554 로 연결한다.



05. 마무리





앞에 01~03 까지 이론적 설명은 아주 길고 어렵게 설명을 하였지만, 공유기에서의 설정은 허무할 정도로 너무 간단하다. 하지만, 기능의 의미를 모르면 아무리 좋은 것이라 하더라도 사용하질 못한다. 아직까지도 공유기를 사용하는 사용자들의 대부분은 공유기의 공장 출하 값을 기본으로 사용하는 경우가 대부분이다. 이럴 경우 보안에 아주 취약하기도 하지만, 비싼 돈을 지불하고 구입한 제품을 제대로 활용하지 못하는 경우이기도 하다.

필자는 DDNS를 등록하고, 카메라의 ip와 포트를 포트포워딩 설정을 통해 외부와의 연결을 설정하였다. 이젠 실시간 감시 설정은 모두 완료된 것이다.

다음 편에서는 ffmpeg와 crontab을 활용하여 1분단위로 끊어 스트리밍 영상을 녹화하는 방법에 대해 설명할 예정이다. 여기서, 블랙박스의 녹화기능 처럼 특정일이 지난 영상은 자동으로 삭제하는 방법도 함께 공유할 예정이다.


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

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

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

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

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

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


2018년 12월 3일
Kunttang

반응형
블로그 이미지

매깡

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

,
반응형




01. 너의 취미는 뭐니?



필자의 취미는 다양하지만, 그 중 우선순위를 정하라고 하면, 3위안에 사진찍는 것이 포함된다. 2003년 경 처음 시작한 사진이란 취미는 벌써 15년 째, 계속되고 있다.


사진을 잘 찍는 다는 것은 지극히 주관적이다. 대부분의 사람들은 자기가 보아왔던 사진과 다른 사진을 보면 잘찍는다고 칭찬을 해 준다. 하지만, 사진을 촬영한 사람의 입장에서 보았을 때에는 이 사진에 담고자 하는 의미를 강조한 것일 수도 있고, 촬영자의 촬영 습관일 수도 있다.


필자가 처음 사진을 시작 했을 때에는 아웃포커싱이라는 사진이 너무 멋있어서 그렇게 찍어보고 싶어 시작을 하였다. 필름 카메라로 시작하였는데, 사진에 대한 이론도 없이 무작정 셧터를 누르다 필름 현상을 하는데에만 많은 돈을 사용하였다.



 




사진의 원리를 조금씩 알아가기 시작한 시점은 2007년 부터였다. 이 시점에는 이미 3번 째 카메라를 손에 쥔 상태였다. 캐논 EOS 5 (필름카메라) -> EOS 300D(DSLR, 아마 한국에 출시된 최초의 입문용 DSLR 일 것이다.) -> 니콘 D50(DSLR) 의 순서로 기종을 변경했다. 지금 생각하면 정말 바보 같은 짓이었다.


아무리 찍어봐도 사진의 원리를 모르니, 아웃포커싱 근처도 못가고 있었다. 장비 탓만 주구장창 하다가, 사진에 대한 이론 책을 보게 되었다. 


사진에 대한 책을 정독하면서 분석을 해 보니, 바디의 문제가 아니었다. 바로 렌즈의 문제였다. 일단, 입문용 구성의 렌즈들이 문제였다. 일면 번들렌즈라하는 18-55mm 렌즈는 조리개 값이 F3.5 에서 F5.6으로 18mm에서는 최대 개방이 F3.5, 55mm에서는 최대개방이 F5.6으로 심도깊은 사진을 기대하기 힘든렌즈였다. 이 때부터 렌즈의 바꿈질은 시작이 되었다.


단순히 아웃포커싱이 해보고싶어서 시작한 사진은 4년만에 렌즈 바꿈질로 성공을 하였고, 이 때부터 돈만 생기면 렌즈를 구입하기 시작한다. 사진을 알고나니 바디의 성능이 부족해지기 시작한다. 펜탁스 진영으로 넘어가서 펜탁스 입문기(K100D, 그 때 당시에는 손떨림 방지기술로 인해 저조도에서도 흔들리지 않고 촬영이 가능하다는 것에 어마무시한 장점이 있었던 시절이다.)를 잠깐 사용하다가 펜탁스 K10D의 클론모델인 삼성 GX10 을 구입하여 펜탁스 진영의 리밋렌즈와 스타렌즈로 사진을 담곤 하였다.


이러다 보니, 사진이 좋아지기 보다 렌즈 수집병이 걸리기 시작한다. 어느날 눈을 뜨고 보니, 사용하지도 않는 렌즈들이 먼지가 쌓여 방 한켠에 필자의 선택을 기다리고 있는 모습이 보이기 시작했다. 그렇다, 보통 촬영에 사용되는 렌즈는 2개에서 3개이고, 그 이외의 렌즈는 잘 사용하지 않게 된다. 자신에게 맞는 렌즈군 2개에서 3개를 찾을 때까지 렌즈의 바꿈질은 계속된다.


나의 취미는 사진을 찍는게 아니고, 장비를 모으는 것이었다.




02. 진짜 사진의 의미





어느날 31mm 리밋렌즈만 GX10 바디에 장착하고 출사를 나간 적이 있었다. 평소 같았으면, 28-75mm, 85mm, 70-300mm 를 가방에 다 넣고 출사를 나갔을 텐데, 줌렌즈도 아닌 단렌즈를 그것도 31mm 크롭바디이니 풀프레임으로 환산하게되면 대략 50mm 정도가 된다. 즉 표준 화각이 되는 것인데 여러 컷을 찍었는데도 불편함이 없었다. 심지어 잘 나온다. 31mm 로 사진을 찍을 수 있는 방법들을 생각하기 시작한다.


그렇다. 렌즈의 성능을 따지기 전에 그 렌즈로 찍을 수 있는 사진을 생각하며 찍어봐야 그 렌즈의 진정한 장점을 찾을 수 있는 것이었다. 왜 수년동안 이 사실을 깨닫지 못했는지 내 자신이 참으로 한심해 보였다.


그 때 이후로 필요한 렌즈 몇 개를 제외하고 전부 처분해 버렸다. 그러고는 현재 사용하고 있는 EOS 6D 와 렌즈 몇개로 정착하게 되었다. 펜탁스 진영에서 다시 캐논 계열로 넘어오게 된 이유는 풀프레임이 펜탁스 진영에 없었기 때문에 어쩔 수 없는 선택이었다.


현재는 사진을 찍는 이유가 딱 정해져 있다. 첫 번째로는 교회 각종 행사 사진을 찍는 것이다. 두 번째로는 아이들의 사진을 찍어 주는 것이다. 기록을 위한 사진과 추억을 담기 위한 사진을 찍고 있다.


이렇게 바뀌다 보니 마음이 편해지고, 더 이상 사진을 찍는데 장비 탓을 안하게 된다. 이제서야 진정한 사진의 의미를 부여할 수 있게 되었다.




03. 폰카의 성능



DSLR이 폭풍 같은 인기가 있었던 시절이 있었다. 너도나도 DSLR 을 어깨에 매고 다니던 시절이다. 참 웃긴 것이 DSLR 을 매고 다니는 대부분의 사람들은 입문용 바디에 번들렌즈 조합이 대부분이었다. DSLR로 찍으면 무조건 사진이 잘 나온다고 생각을 했던 것 같다. 하지만, 사람들은 DSLR 의 무거움과 안좋은 휴대성으로 인해 외면하기 시작하였다. 이 때 쯤 미러리스라는 새로운 카메라가 출시 되면서 기존의 컴팩트카메라를 사용하던 사용자들과 간단하게 DSLR 을 사용하는 사용자들을 미러리스의 세계에 끌어들였다. 이 때까지만해도 폰카의 성능이 아주 좋던 시절은 아니어서, 컴팩트 카메라를 지속적으로 사용하는 사람들도 어느정도 있었다.


하지만, 이미지 센서의 발전으로 인해 폰카의 성능이 일반 컴팩트 카메라의 자리를 빼앗어버렸다. 그리하여 컴팩트카메라는 사라지기 시작하였고, 심지어 미러리스 진영에 있던 사용자들까지 폰카의 세계로 들어와 버렸다.


이젠 아주 무겁게 DSLR 을 가지고 다니는 사람과 핸드폰 하나만 가지고 다니는 사람으로 모양이 그려진 것이다. 폰카의 동영상 촬영능력은 FullHD(1080p) 60fps는 기본이고, 최근엔 4k 동영상 촬영이 가능해 졌다. 화질도 나쁘지 않고, 웬만한 카메라는 가뿐히 밟아버리는 수준까지 올라와 버렸다.


필자 역시 DSLR 을 꺼내는 빈도가 점점 줄어들고, 폰카 위주의 사진이 대부분이었다. 하지만 어느날 DSLR과 폰카로 찍은 비슷한 구도와 물체의 사진을 컴퓨터로 비교를 해보았는데 사진의 품질이 느껴지기 시작했다.


폰카의 성능이 수준급으로 올라간 것은 분명하다. 하지만, 요즘의 트랜드는 사진이 인화되는 경우가 드물다. 또한 사진을 컴퓨터로 보기 보단 휴대폰으로 많이 보며, SNS 에 많이 업로드를 한다. SNS 역시 휴대폰으로 사용하는 경우가 대부분이기 때문에 폰카의 화상처리는 대부분 작은 LCD 안에 표시되어 가장 잘 나타날 수있도록 최적화가 되어있다.


휴대폰으로 보았을 때에는 아주 훌륭한 사진이 컴퓨터로 보게 되면 엉망인 경우가 종종 있다. 즉 폰카는 한계가 있는 것이다.



 




04. 그래도 무거운 것은 싫다.



폰카의 사진은 마음에 안들고, 간단히 가지고 다닐 수 있는 가벼운 카메라가 필요했다. 좋은 성능의 컴팩트 카메라(일명 똑딱이)가 있었으면 했다. 컴팩트 카메라 시장이 죽은 것으로 알고 있던 필자는 우연히 회사 동료로부터 똑딱이에 대한 이야기를 듣게 된다. 하이엔드 똑딱이 시장이 열리고 있다는 것이다.


설마설마 하며 검색을 해 보니, 똑딱이 가격이 미러리스 가격보다 비싸다. 성능은 미러리스보다 좋다. 다만 렌즈를 교환할 수 없지만 렌즈를 교환할 필요가 없을 정도로 렌즈가 좋아졌다. 심지어 대부분의 컴팩트 카메라 무게는 150g 에서 250g 사이이다.


여러 모델군을 리스트하여 비교 분석을 해 보았더니 Canon Powershot G9X Mark II가 눈에 들어온다.




05. 똑딱이 구입의 기준



똑딱이를 살까말까 고민하던 중 회사 동료가 필자에게 다음과 같은 말을 한다.


"카메라를 사기위해 6개월을 고민 하는 것은 6개월치의 추억만 날릴 뿐입니다.

어짜피 고민하면 언젠가 구입하게 될텐데, 더 이상 고민하지 말고 지르세요."


이 말을 듣는 순간 내 자신의 기준을 세우기 시작했다.


첫째, 40만원이 넘으면 안된다.

둘째, 가벼워야한다.

셋째, 어느정도 조작할 수 있는 기능이 있어야 한다.

넷째, FullHD 60fps 동영상 촬영이 가능 해야 한다.


여러 선택 군들이 있었으나 필자는 Canon의 Powershot G9X Mark II 를 선택하게 되었다.


캐논의 Powershot 제품군 중 G 시리즈는 하이엔드군에 속한다. 하이엔드군은 다시 3가지 분류를 하게 되는데 숫자가 작을 수록 좋은군에 속한다. 즉 필자가 구입한 G9X Mark II는 캐논 하이엔드군의 막내이다. G9X -> G7X -> G1X 순이다. 일단 풀프레임 DSLR 이 있으니, G9X 이면 필자에게 충분하다고 생각을 하게 되었다.




06. 구입 그리고 개봉





G9X Mark II 로 결정하고, 최저가 검색을 진행하여 정품 중 배터리 추가 이벤트가 가능한 제품을 선택하여 인터넷 쇼핑몰에서 구입을 하였다.


[그림1] 안전 포장되어 배송된 G9X Mark II[그림1] 안전 포장되어 배송된 G9X Mark II



주문한지 하루만에 아주 안전하게 배송이 되었다. 항상 포장을 뜯을 때에는 가슴이 쿵쾅거린다. 과연 좋은 사진을 찍을 수 있는 장비인지 기대감 가득이다.



[그림2] Canon PowerShot G9X Mark II 박스 전면 모습[그림2] Canon PowerShot G9X Mark II 박스 전면 모습



박스의 크기가 상당히 작다. 그리고, 개봉방지 실이 배터리 1+1 증정스티커이다. 배터리가 두 개 들어있는 이벤트 대상 제품을 구입하게 되었다. 사실 캐논의 정품 배터리는 대부분 비싸기 때문에 처음 구입할 때 부터 1~2만원 차이이면 무조건 배터리를 추가해 주는 제품으로 구입하는 것이 이득이다.



[그림3] Canon PowerShot G9X Mark II 박스 개봉[그림3] Canon PowerShot G9X Mark II 박스 개봉



박스를 개봉해 보았다. 정품이 확실하다. 캐논 제품들은 구입 후 30일 이내 정품 등록을 하게 되면 AS 기간을 1년 연장해 준다. 정품을 구입하게 된 경우 꼭! 정품등록을 하는 것이 좋다.





[그림4] Canon PowerShot G9X Mark II 구성품[그림4] Canon PowerShot G9X Mark II 구성품



구성품은 생각보다 단순하다. 카메라 본체, 충전기, 배터리 2개, 핸드스트랩, 충전기용 전원선, 보증서, 설명서이다.



[그림5] Canon PowerShot G9X Mark II 전면[그림5] Canon PowerShot G9X Mark II 전면



캐논 파워샷 G9X의 전면 모습이다. 옛날 카메라를 연상시키는 디자인이다. 디자인 자체는 아주 깔끔하다. G9X Mark II 가 한국에 출시 했을 당시에는 블랙 색상이 한정판이었는데, 아직도 판매가 되고 있다. 심지어 실버색상과 가격까지 동일하다. 결국 한정판이 아니었던 것이다. 그래도 기분이니, 실버를 구입하고 싶었지만 블랙을 구입하였다. 렌즈의 규격은 10.2mm ~ 30.6mm 의 스펙을 가지는 줌렌즈이다. 조리개값은 가변식으로 10.2mm에서는 F2.0까지 조리개를 개방할 수 있고, 30.6mm 이후에서는 F4.9가 최대 개방치이다.



[그림6] Canon PowerShot G9X Mark II 후면[그림6] Canon PowerShot G9X Mark II 후면



캐논 파워샷 G9X Mark II의 후면 사진이다. 큼직한 정전식 터치방식의 3" LCD 가 장착되어있다. 실제 조작을 해 보니, 터치의 인식이 아주 잘되고, 사용하기 편했었다. 다만 사이즈를 작게 만들다 보니, 그립감이 많이 안좋았다. 괜찮은 핸드스트랩을 구입해야 할 것 같다.





[그림7] WiFi 버튼[그림7] WiFi 버튼



캐논 파워샷 G9X Mark II 는 와이파이를 지원한다. 본체 좌측에 와이파이 접속 버튼이 존재한다. 실제 저 와이파이 버튼을 누르게 되면, 와이파이로 할 수 있는 기능 설정에 대한 화면이 LCD에 출력된다.



[그림8] 모드다이얼[그림8] 모드다이얼



우측 상단에는 모드를 설정할 수 있는 다이얼이다. 웬만한 미러리스 또는 입문 DSLR 에 있는 모드는 전부 있다. 필자는 주로 Tv(셔터스피드 우선모드) 또는 Av(조리개 우선모드) 를 많이 사용한다. 



[그림9] 충전포트와 HDMI 포트[그림9] 충전포트와 HDMI 포트



 



본체의 우측에는 HDMI 포트와 USB 포트가 있다. USB 포트는 데이터 입출력도 가능하지만, 충전도 가능하다. 보조배터리로도 충전이 되니, 여행을 다니면서 배터리 문제로 크게 걱정할 필요는 없을 것 같다.



[그림10] 배터리와 메모리카드 삽입부(카메라 하단)[그림10] 배터리와 메모리카드 삽입부(카메라 하단)



배터리와 메모리는 하단에 들어간다. 이 부분은 별로 특별한 부분이 없다.



[그림11] G9X 의 크기[그림11] G9X 의 크기



G9X Mark II를 손바닥 위해 올려보았다. 손바닥 위에 올리는 제품의 크기가 작다는 것을 한번에 느낄 수 있었다. 작은 대신에 그립감을 완전히 포기해야한다. 3" 터치디스플레이역시 너무 크기 때문에 사진 찍을 때 약간 애로사항이 있다. 하지만, 작고 가볍게 만든 것 만으로도 충분한 가치가 있다고 생각한다.



[그림12] G9X 전원 ON[그림12] G9X 전원 ON






G9X Mark II의 전원을 넣어보았다. 숨겨져 있던 렌즈가 튀어나온다. 렌즈 뒷쪽 다이얼은 마치 렌즈를 뺄 수 있을 것 처럼 만들어놓았지만, 사실 각종 값들을 빠르게 하기 위한 설정 다이얼이다. 저 다이얼이 사용을 해 보니 상당히 편하다.




07. 설정



IT 기기를 구입하고 처음 전원을 인가 하였을 때, 각종 설정화면이 나타난다. 빨리 사용해보고 싶은 마음이 굴뚝 같으나, 초기 설정을 하지 않고는 사용할 수가 없다. G9X Mark II 역시 초기 설정을 피해갈 수 없었다.



[그림13] G9X Mark II의 시간설정 화면[그림13] G9X Mark II의 시간설정 화면



처음만난 화면은 시간 설정 화면이다. 터치로 간단히 설정할 수 있으며, 터치감 역시 좋아 작은 버튼의 인식률이 상당히 좋다.



[그림14] G9X Mark II의 타임존 설정[그림14] G9X Mark II의 타임존 설정



시간 설정이 완료되면 다음화면으로 타임존 설정 화면이 나타난다. 설정화면에는 Seoul 이 없다. 일본과 표준시를 동일하게 사용하기 때문에 Tokyo 를 설정한다.





[그림15] G9X Mark II의 언어 설정[그림15] G9X Mark II의 언어 설정



언어 설정 화면이다. 초기 설정은 English 로 기본 설정이 되어 있다. 메뉴로 진입하여 언어설정을 별도로 진행한다. 한국어로 설정을 하면 모든 언어가 한국어로 표시된다.



[그림16] G9X Mark II 첫 컷[그림16] G9X Mark II 첫 컷



G9X Mark II 의 모든 설정을 마치고 첫 컷을 찍어보았다. 조리개 우선모드에서 F2.0 으로 설정하고 손가락을 찍어보았더니 아웃포커싱이 제대로이다. 필자가 사진을 처음 배우기 시작하여 5년만에 찍는 법을 알게 된 아웃포커싱이 컴팩트카메라에서는 그냥 된다. 정말 대단하다. 컴팩트카메라에서 이런 성능이 나온다는 것은 기술의 발전이 엄청나게 진행 되었다는 것을 알 수 있다.




08. 테스트사진




G9X Mark2 로 앞으로 테스트 사진을 여러 방법으로 찍어볼 예정이다. 찍은 사진은 계속 포스팅 할 예정이며, 포스팅이 될 때마다, 페이지 링크를 본 카테고리에 추가한다.


[링크]

   - 2018/09/05 - [04. 취미/사진] - [G9X Mark2] 캐논 파워샷 G9X 마크2 테스트 사진 #1





09. 마무리



그렇게 어렵게 완성했던 아웃포커싱이 40만원이 안되는 컴팩트 카메라에서 그냥 구현되어버린다. 아직 많은 사진을 찍어보지는 못하였는데 파워샷 G9X Mark II로 블로그 포스팅용 사진, 일상 사진, 아이들 사진, 여행 사진 등을 찍을 것으로 예상한다. 과연 어느정도 성능이 나올지 궁금하다. 조만간 첫째 아들과 함께 출사를 나가서 이런 저런 사진을 찍어볼 예정이다.



2018년 9월 4일

Kunttang






반응형
블로그 이미지

매깡

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

,