반응형




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 만들기 프로젝트가 끝을 보이고 있다. 본 편은 아주 간단히 끝날 수 있는 내용이다. 1편 ~ 6편 까지 천천히 잘 따라왔다면, 현재 DVR이 정상동작을 하고 있을 것으로 보인다.

요즘 출시하고 있는 대부분의 ip 카메라는 [그림1]의 좌측 상단과 같이 영상에 시간이 삽입되어 송출된다.


[그림1] 시간과 날짜가 영상에 삽입된 IP 카메라의 화면[그림1] 시간과 날짜가 영상에 삽입된 IP 카메라의 화면



 


영상에 시간과 날짜가 포함되는 기능은 CCTV에서 상당히 중요한 것이다. 파일명은 파일 탐색기에서 간단히 수정할 수 있다. 파일의 수정날짜 또한 손쉽게 수정이 가능하다. 열심히 CCTV의 영상을 녹화했는데 날짜와 시간의 데이터가 변조되었고 이 영상이 어떠한 사건의 증거라면 증거로서의 가치가 떨어지게 될 것이다. 6편에서 RTSP 스트리밍 영상을 FFmpeg를 이용하여 매 1분마다 1분단위로 저장하는 방법을 소개하면서 저장되는 파일명이 날짜와 시간으로 설정될 수 있도록 스크립트를 작성했다.

여기서, ipCam 의 영상인 경우 이미 시간이 삽입되어 있기 때문에 큰 문제가 발생하지 않지만, V4L2 로 받은 영상인 경우 영상에는 아무 정보가 기록되어 있지 않다. 따라서 본 편에서는 FFmpeg 를 이용한 영상파일 저장과정에서 날짜와 시간을 삽입하는 방법에 대해 설명 하려고 한다.



02. FFmpeg의 drawtext 필터



사실 6편의 FFmpeg 사용법에 본 내용이 추가되면 깔금할 것으로 보여 6편에 본 내용을 작성하려고 했다. 하지만, 6편은 이미 다양한 기술에 대한 설명으로 글이 많이 복잡하여 7편에 간단히 소개를 한다.

ffmpeg에는 다양한 필터들을 제공하고 있는데 그 중 drawtext라는 필터가 있다. 필터명 그대로 영상에 Text 를 추가하는 필터이다. FFmpeg에서 필터를 적용하기 위해서는 -vf 라는 옵션을 사용해야 한다. (vf 는 video filter 의 약자로 추정된다.)

여러개의 필터를 함께 적용하기 위해서는 -vf "필터1=xxx 필터2=yyyy 필터3=zzzz" 식으로 -vf 옵션은 한번만 사용하고, " 로 다수의 필터를 묶어준다.

6편에서 완성된 ffmpeg 명령어는 다음과 같다.


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


위의 명령어에 -vf 옵션을 사용하여 drawtext 필터를 적용할 것이다. 완성된 명령어는 다음과 같다.


ffmpeg -i "rtsp://192.168.219.112:8554/test.sdp" -vf drawtext="text='JunWrap_CAM1_Ext' %'{localtime\:%D}' %'{localtime\:%X}': fontcolor=white: fontsize=10: box=1: boxcolor=black@0.5: boxborderw=5: x=20: y=20" -t 60 -an $DATESTRING_CAM1


상당히 긴 옵션이지만, 차근차근 살펴보면 어려울 것이 없다.

"text=  ' 다음에는 적용될 문구를 적으면 된다. 'JunWrap_CAM1_Ext' 로 시작이 되었다. 말 그대로 해당 문구를 삽입하게 된다. 다음에 오는 %'{localtime\:%D}' %'{localtime\:%X}' 는 시스템의 날짜와 시간을 String 형태로 삽입하는 구문이다. 그냥 사용하면 된다. 이후에 오는 옵션은 Font 의 색상, 크기를 설정하는 옵션이고, 그 다음은 Box에 대한 옵션이다. 특히 boxcolor=black@0.5 라는 옵션은 black 색상의 배경을 가진 박스를 만들고, 투명도 0.5 를 적용하라는 뜻이다. 맨 마지막, x=20: y=20 부분은 drawtext 객체가 그려질 시작 위치를 나타내는 것이다. 영상의 좌측 상단을 (0, 0) 의 좌표로 보고 계산을 하는 것이다.




[그림2] drawtext 필터 적용 결과 영상[그림2] drawtext 필터 적용 결과 영상



[그림2]는 drawtext가 적용된 영상의 결과물이다. 정상적으로 잘 적용된 것을 확인할 수 있다.



03. 마무리



DVR을 만드는데 있어서 어려운 부분은 끝났다. 현 수준으로도 DVR의 기본 기능은 충분히 이용할 수 있는 수준이다. 다만, 리눅스 운영체제를 사용하고 있는 부분이어서 저장된 영상 파일을 확인하는 것이 조금 불편할 수 있다. 그래서, 다음 편에서는 윈도우와 리눅스의 디렉터리 공유를 할 수 있는 samba 설치방법과 사용방법에 대해서 포스팅을 하려고 한다. 

6편에서 설정한 녹화 경로를 samba 디렉터리로 설정을 하고, 윈도우에서 samba 디렉터리에 접근을 한다면, 언제 어디서든지 편리하게 녹화된 영상을 확인할 수 있을 것이다.


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 설정)

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



2018년 12월 5일
Kunttang

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

출처: http://blog.kunwoo.pe.kr/134 [Kunttang's Life]

출처: http://blog.kunwoo.pe.kr/134 [Kunttang's Life]


반응형
블로그 이미지

매깡

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

,