점자로 보는 뮤직 비디오
🎞
• 집계 중...
이 글의 목표는 동영상을 점자 패턴 스트림 (Braille Pattern Stream, ⠨⠎⠢⠨⠀⠙⠗⠓⠾⠀⠠⠪⠓⠪⠐⠕⠢)으로 변환하는 방법을 설명하는 것이다. 점묘화로 만드는 동영상이나 아스키 아트로 만드는 동영상이라고 생각해도 좋을 것이다 (물론 점자는 ASCII가 아닌 Unicode이다.) 아직 점자 동영상이 무슨 뜻인지 모르겠다면 완성본을 먼저 보자.
자막을 켜고 5-10초를 기다리면 된다. 자막이 10MB라 로딩이 느릴 수 있다. 만약 점자가 보이지 않는다면 다음 영상을 보자.
점자 패턴 스트림은 말 그대로 연속된 형태의 점자 패턴이기에 동영상으로 만들 수도 있고 아예 자막으로 모든 것을 넣어버릴 수도 있다. 자막이야말로 텍스트 스트림을 보여주는 수단이기 때문이다. 때문에 이 프로젝트의 목표를 동영상을 변환해서 YouTube 자막으로 넣어보는 것으로 잡았다. 기반 기술은 다음과 같다.
- OpenCV (C++ cv2) — 동영상을 연속된 이미지로 변환하기 위해 사용됨
- Python Image Library (Python 3 Pillow) — 이미지를 점자로 변환하기 위해 사용됨
- Python Standard Library (sys, os, pathlib) — 파일을 읽고 쓰기 위해 사용됨
- ffmpeg (optional) — 동영상을 편집하기 위해 사용됨
anaclumos/video-in-dots에 오픈소스로 공개되어 있다.
설계
목표를 위해서 다음의 기술들이 필요하다고 생각했다.
- 임의의 이미지를 모노크롬 이미지로 변환하는 기술
- 모노크롬 이미지를 임의 크기의 점자 배열로 변환하는 기술
- 동영상을 프레임의 연속으로 변환할 수 있는 기술
- 3번에서 얻은 프레임을 2번에서 얻은 기술을 이용해 텍스트 스트림으로 변환하여 정형화된 자막의 형태로 변환하는 기술
- (나중에 알게 됨) 텍스트 스트림을 특정 크기 이하로 압축하는 기술
- (나중에 알게 됨) Dithering 처리 기술