CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.

48
CCTV 영영영 FFmpeg 영 영영영영 Time Lapse 영 영영영 영영영 .

Transcript of CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.

CCTV 영상을 FFmpeg 를 사용해서Time Lapse 로 만들어 보았다 .

공사하는 과정을 기록으로 남기고 싶은데…

어떻게 타임 랩스를 만들까 ?

어떻게 타임랩스를 만들까 ? 1

안드로이드 디바이스를 사용하여 일정 시각마다 사진을 찍어타입 랩스로 만들어 보자http://core0.staticworld.net/images/article/2012/12/androidcamera_primary-100018155-gallery.jpg

스레드로 무한히 돌면서 사진을 촬영하도록 제작

하지만 남는 디바이스가 갤럭시 노트 10.1 뿐…방수를 위해 파일 케이스에 렌즈 구멍을 만들고 옆 틈을 막음불안불안…

http://www.slideshare.net/flashscope/ss-57507640

하지만 메모리를 절약해봐도OnDestroy 에서 알람으로 다시 앱을 부활시켜도한 3-4 일 정도 버티다 멎는 경우가 발생…

결국 샤오미 카메라 + 라즈베리로 만들기 위해 샤오미 카메라를 주문

실제 공사현장에 가보니…인터넷이 안되는 지역…

그리고 건물이 생각보다 빨리빨리 만들어지고 있어더 이상 디버깅을 위해 시간을 낭비할 수 없었음…

문제점 정리안드로이드 앱을 만들어서 타임 랩스 만들기→ 바로 앱이 죽으면 모를까 3-4 일 정도 지나면 앱이 죽지는 않았지만카메라로부터 사진을 못 갖고 오는 경우가 발생→해결에 시간 걸릴 듯현장에 인터넷이 안됨→ 샤오미 + 라즈베리파이 조합은 Wan 은 연결되지 않았지만공유기를 같이 설치하면 연결이 가능하지만 웹으로 사진 전송이 안되어매번 메모리에 저장된 사진을 며칠 단위로 백업을 직접 해줘야 함공사가 순조롭게 진행→ 샤오미 카메라가 도착하길 기다리는 것도… 또 도착 후 다시 구현 ,안드로이드나 샤오미로 프로그래밍 한 것을 디버깅하는 시간도 아까움

고민을 하던 중에 눈에 들어온 특가 세일 때 미리 사둔 CCTV…

CCTV 동영상을 빠르게 재생하면결국 동일한 타임 랩스 영상을 만들 수 있지 않을까 ?

고용량 HDD 로 장기간 촬영이 가능1CH( 카메라 ) 당 하루에 약 6GB 사용 (928*480 12fps)

저장 용량 걱정 없이 비 등으로 인해 공사가 중지될 때마다데이터 수거해서 편집을 함( 후에는 24 시간 촬영이 아니라 6 시부터 20 시까지만 촬영→데이터 절약 )

https://upload.wikimedia.org/wikipedia/en/a/a5/Final_Cut_Pro_X.jpg

하지만 몇 백 시간이나 되는 영상을 일반적인 편집 프로그램으로편집하기는 거의 불가능

다행히 CCTV 에서 영상을 저장할 때약 1 시간마다 별도의 파일로 저장을 해 줌배치작업을 만들어 각 파일마다FFmpeg 로 인코딩 작업을 실시

사용 컴퓨터 환경CPU : Intel i5-2500K @ 3.30GHz

RAM : 8GBHDD disk driveWindows10 x64

FFmpeg 를 직접 빌드 하지 않고바이너리를 직접 받아서 사용https://ffmpeg.zeranoe.com/builds/

ffmpeg -i [input] -vf “setpts=0.000138889*PTS” -an [out.avi]약 한 시간 분량 영상파일 변환에 30 초 소요 그리고 하나로 합침…

https://youtu.be/NZan4yXEtCI

결과물 1

문제점

- 화질 저하 ( 원래부터 영상 화질이 나쁘지만 변환 후 더 저하… )- 영상의 절반이 밤… 변화를 볼 수가 없음

야간 장면 없애기

편집 프로그램에서 매일 어두워지는 타임을 찾아서 잘라내는 건엄청난 노가다… 새로운 방식을 찾기로…

이전 방식은 AVI → 빨리 재생된 AVI 였지만일정 시각마다 AVI → PNG 로 변경

1.png2.png

4.png3png

5.png6.png

ffmpeg -i [input] -r 0.0017 -f image2 [out%%3d.png]

1 시간 분량 변환에 기존 약 30 초에서 40 초로 시간이 좀 증가됨

자바로 동일 폴더 내에 있는 png 파일들의각 픽셀을 전부 검사하여 회색 ( 야간 ) 인지 판별

보통 회색 사진은 r, g, b 값이 동일하지만이건 칼라 사진에 적외선 촬영으로 인해 회색이 되었기에 칼라가 섞임r==g==b 가 안되므로 r, g, b 의 값들이 서로 비슷한지를 비교

또 r+g+b 의 값으로 어두운지 아닌지를 판별 값으로 만듦이 값들로 회색 사진인지 최종 판단은 몇 번의 테스트로 매직넘버를 찾음

아날로그 방식의 CCTV 여서인지가끔 심한 노이즈가 발생…이런 건 수동으로 삭제…

하루치 영상으로 만들어진 117개의 png 파일을 검사 시 약 2.17 초 소요

ffmpeg -framerate 30 -i [in%%4d.png] -c:v libx264 -r 30 -pix_fmt yuv420p [out.mp4]

하루치 (73개의 png) 를 하나의 mp4 영상으로 변환시약 1.7 초 소요

공사기간 전체의 사진 (8055개 ) 을 합쳐도약 2 분 28 초로 합치는 속도는 굉장히 빠름

결과물

https://youtu.be/3U9CT7Llmjc

https://youtu.be/krb3gBHmBsg

카메라 위치와 각도를 미리 상상해서 !

처음 카메라를 설치할 때 완성될 때의 모습을 상상해서 과정이 잘보이는위치와 각도를 정할 수 있으면 이상적이 겠지만실제로 하기에는 힘들었음… 때마다 각도를 수정하는 바람에영상이 순간이동 하듯 튀는 장면들이 등장하게 됨

http://icons.iconarchive.com/icons/thvg/slick-drives/512/USB-HD-Drive-icon.pnghttps://cdn2.iconfinder.com/data/icons/pittogrammi/142/01-512.png

인코딩 시간보다 셋톱박스 → 외장하드 → 컴퓨터로 복사하는 시간이훨씬 많이 소요됨 보통 자기 전에 외장하드로 복사하도록 하고다음날 컴퓨터로 복사해서 인코딩 작업을 함(CCTV 하드를 직접 연결해 보았지만 일반적인 파티션이 아니라 포기… )

UFO?!

보통 시간 단위로 파일이 저장되는데 몇십분 단위로 저장이 되고데이터에 손실이 발생한 날을 발견(10 시 이후로는 정상 )

정상

비정상

하늘에 보이는 흰 점…

구름의 역방향으로 느린 속도로 날아가는 점 발견…

점 이동 방향

구름 이동 방향

https://youtu.be/Ost_p0nk78E

유튜브에 업로드 하니 잘 안보이는 군요… .편집하기 전 원본 파일도 업로드 해봅니다흥미있으신 분만 ?!

믿거나 말거나 ...사실 저도 안 믿습니다만 설명하라고 하면 모르겠네요 ...

http://bit.ly/1Nxaqhc

여하튼 이런저런 일도 있었지만…

혹 강릉에 관광 오신다면 ?!

http://limebeach.co.kr/

감사합니다 .