rein's world

동영상 파일 미리보기 이미지로 쪼개기

외부 전시회에 나갈 때 종종 고객사 동영상을 재생한다(만드는게 게임 서버 백엔드 도구들이라 뭔가 시선을 끌게 없으니 이런걸 재생함). 그런데 이런걸 틀어놓으면 “이 동영상이 무슨 게임이냐"라는 질문을 종종 받는다.

그래서 동영상을 수 초 간격으로 (동영상 길이에 따라서 3 - 5 초 정도마다) 이미지로 저장해서 화면을 보고 이름을 알려줄 수 있게 저장해봤다.

동영상을 아주 거칠게 단순화 하면 (이전 프레임들을 이용해서 만들어낼 수 있는) 이미지를 넣어놓은 데이터 파일이다. 실제로 각 이미지를 전부 따로따로 들고있는 건 아니지만, 중간의 key frame부터 시작하면 그 이후의 변경 분을 올려서 중간 이미지들을 재구성 할 수 있다.

아래 명령을 실행하면 12프레임 마다 JPEG 파일을 하나씩 저장한다. (fps=1/12가 12프레임마다 1개; 초당 24프레임인 영상이면 0.5초마다 하나씩; output/%04d.jpg가 출력 디렉터리 + 파일 이름 형식이다) 이 방법 말고도 I-프레임만 저장하는 등의 방법도 있는데, 내 기대처럼 동작하질 않아서 못써먹었고, 여기선 설명하지 않았다.

ffmpeg -i path/to/video-file -vf fps=1/12 output/%04d.jpg

요즈음 사용할 만한 대부분의 동영상은 h.264 (HEVC) 이나 Google의 VP8 혹은 9 을 써서 만든다. 이런 동영상 파일은 위의 명령어로 이미지 파일 묶음처럼 만들어서 써볼 수 있다.