Day 6 화요일 밤
잘 만들면 좋은 기대되는 결과물이 나올 것 같으니 해보시라는 기분좋은 피드백
근데 어떻게 해야 잘 만들지
수요일 낮
프론트 백 각각 미래의 계획을 세우고 역할분담을 했다
백엔드는 둘이서 역할분담 후 일단 맨땅에 헤딩 (탑다운? 바텀업? 둘중하난데 아무튼 그거)
프론트 셋은 일단 이번주는 리액트 공부
처음 써보는 프레임워크라 확실히 배우고 쓰는 것이 나을 것 같다고 한다
백은 당장 개발 진행
우리 백 팀원은 전공자라 서버 DB 구축 경험이 있고 (든든)
나는 데이터 분석쪽에 관심이 있으니
내가 분석엔진을 만들기로 했고, 나머지 한명은 엔진이 돌아갈 서버를 담당
서로의 관심사가 잘 분리되어있어서 다행
하지만 이대로 프로젝트를 진행하면 서버 다룰줄 모르는 백엔드가 돼버릴텐데...
미래의 내가 힘낼거라 믿자
수요일 밤 개발 시작
주제를 선정하는 과정에서
채팅, 오디오는 대강 아무 라이브러리나 긁어와서 돌려보고 아 이게 아무튼 되긴하는거구나 확인은 했지만
video frame쪽은 살짝 벅차다보니 살짝 외면해둔 상태
픽셀의 변화를 측정했는데도 하이라이트 검출에 아무 영향이 없으면 곤란해지는 상황이다
그래서 FFmpeg의 사용법부터 공부
기계과 창시구에서 OpenCV로 객체인식이랑 색인식을 했던 적은 있는데
벌써 4년전이라 디테일은 기억도 안나고, 코드도 옛날 노트북 중 하나에 잠들어있을 거라 찾기가 힘들다.
게다가 그쪽으로 깊게 판다고 해서 잘 될지도 모르겠고, 안되면 망한다.
그래서 어차피 영상 분할과 다운로드때문에 써야할 FFmpeg으로 다 해결하려 한다(됐으면 좋겠다)
FFmpeg-python이라는 라이브러리를 발견했는데,
python 환경에서 FFmpeg 응용프로그램을 실행하고
FFmpeg의 target이 되는 영상 데이터를 파이썬의 객체로써 취급할 수 있다
예를들어
이러면 객체 stream에 로컬의 영상 파일이 대응되며 이후 ffmpeg 라이브러리의 함수로 조작이 가능
run()을 하기 전까진 바로바로 처리되는걸 봐선
run 전까진 명령을 스택에 쌓기만 하다가 run을 실행하면 그 명령어들을 순서대로 실제 ffmpeg에서 돌리는 것 같다.
이것저것 example을 돌려보고 나서
일단 속도고 뭐고 신경 안쓴 프로토타입을 만들어봤다
영상으로부터 pixel rgb data를 matrix로 변환
matrix를 numpy array로 변환
numpy 연산으로 각 프레임간 pixel의 변화량을 측정
실행
메모리 폭발하고 굳음ㅋㅋ
압축된 코덱의 영상을 pixel의 matrix로 만들겠다 = 모든 픽셀의 데이터를 가진 압축하지 않은 영상으로 만들겠다
720p 영상의 초당 픽셀 크기 = 1280*720*24fps = 대충 160메가니까
1시간 영상을 올리려면 램이 500기가가 필요하다 ㅋㅋㅋㅋ
프리미어프로같은거에선 좀 무겁긴 해도 돌아는 가던데,
이걸 해결하는 로직이 따로 있나보다.
디코딩이 끝나기 전까지 램에 두는데 램이 부족한게 원인이니, 해결책은 두가지가 있을듯
영상을 작은 영상 여러개로 소분해서 차례로 디코딩한 뒤 다시 합치는 로직을 만들거나
그냥 영상 용량을 감당 가능한 수준까지 줄이거나...
전자를 완성하면 장기적으로 좋겠지만
이시점에 이미 7시라 그냥 후자 선택
미래의 내가 더 나은 물건을 개발할거라 믿는다...
144p 10fps로 낮추니 스트림 1시간당 400초가 걸린다
메모리는 시간당 2GB 좀 넘게 먹는것같은데
로컬은 메모리가 빵빵해서 이정도면 다행히 돌아가긴 한다...
아침 7시 퇴근
PS 풀때는 무슨 억단위로 range가 주어져도 보통 몇초면 끝났는데...
영상이라는 진짜 현실의 무언가를 다루니 허들이 확 높아진 것 같다
할일 :
영상의 용량을 줄이고도 하이라이트를 제대로 검출 가능한지 확인, 안되면 다른 방법 찾기
해상도 낮추고 fps 보존 vs fps 낮추고 해상도 보존 중 어느게 더 성능이 좋은지 비교
'나만의 무기 : HIGHLIGHTING > 개발 일지' 카테고리의 다른 글
Day 9 ~ 10 : Audio 분석 프로토타입 개발, 성능 이슈 (0) | 2022.02.13 |
---|---|
Day 8 : Video 분석 프로토타입 성능검사 (0) | 2022.02.11 |
Day 5, Day 6 : 업데이트 발표 준비, 줌미팅과 피드백 (0) | 2022.02.09 |
Day 3, Day 4 : 새 아이디어, 아이디어 유효성 검증 (0) | 2022.02.09 |
Day 1, Day 2 : 초안 발표 준비, 발표, 새 아이디어 (0) | 2022.02.05 |