팀 슬랙 채널에 올릴 재미있는 제품 사용법 영상을 GIF로 만들기로 했습니다. 5초짜리 MP4 클립을 온라인 변환 도구에 넣었더니 결과물이 47MB였습니다. 원본 MP4가 8MB였는데 GIF가 더 커졌습니다. 뭔가 잘못됐다 싶어서 GIF에 대해 제대로 찾아봤습니다.
GIF의 기술적 특성 이해
GIF(Graphics Interchange Format)는 1987년에 만들어진 이미지 형식입니다. 무려 30년이 넘은 기술이 아직도 이렇게 널리 쓰이는 게 흥미롭습니다.
GIF의 가장 중요한 특성 두 가지가 있습니다.
색상 제한: GIF는 최대 256색만 지원합니다. 수백만 가지 색상을 표현하는 JPEG나 PNG와 달리, GIF는 팔레트 방식이라 한 파일에 256가지 색만 담을 수 있습니다. 색상이 단순한 이미지(만화, 아이콘, 간단한 그래픽)에는 적합하고, 실제 사진 같은 복잡한 색상에는 맞지 않습니다.
무손실 압축: 각 프레임은 LZW 방식의 무손실 압축을 씁니다. 이 때문에 동영상처럼 프레임당 높은 압축률을 기대하기 어렵습니다.
이 두 가지를 이해하면 왜 짧은 동영상 클립을 GIF로 변환했을 때 파일이 커지는지 설명됩니다.
GIF가 MP4보다 파일이 훨씬 큰 이유
MP4 같은 현대 동영상 형식은 H.264, H.265 같은 고효율 코덱을 씁니다. 이 코덱의 핵심은 프레임 간 차이만 저장한다는 겁니다. 배경이 움직이지 않는다면 배경 데이터는 한 번만 저장하고 이후 프레임에서는 "이전 프레임 유지"라는 정보만 담습니다.
GIF는 이런 효율적인 프레임 간 압축이 없습니다. 각 프레임을 독립적으로 저장하거나, 간단한 델타(차이) 방식을 쓰지만 현대 동영상 코덱만큼 효율적이지 않습니다.
5초짜리 30fps 영상이면 150개 프레임입니다. 각 프레임이 사진 한 장 크기라면 150장 분량의 데이터가 됩니다.
용량을 줄이는 핵심 설정들
GIF 용량을 줄이는 핵심은 세 가지입니다.
프레임레이트 낮추기: 30fps를 10~15fps로 낮추면 프레임 수가 절반 이하로 줄어 파일이 크게 작아집니다. 자연스러운 움직임 표현은 15fps로도 충분합니다. 빠른 동작이 있는 게임 클립 같은 경우에만 높은 프레임레이트가 필요합니다.
해상도 줄이기: 1920×1080을 480×270으로 줄이면 픽셀 수가 1/16로 줄어 파일도 크게 작아집니다. 슬랙이나 트위터에 올리는 GIF라면 480~640px 너비면 충분합니다.
색상 수 줄이기: 기본 256색에서 64색이나 32색으로 줄이면 파일이 작아집니다. 색상이 단순한 영상(슬라이드, UI 화면)은 64색도 충분합니다. 색상이 풍부한 실제 사진이나 영상이라면 256색을 유지하는 게 낫습니다.
재생 구간 짧게: GIF의 적정 길이는 3~8초입니다. 10초 이상 GIF는 파일이 너무 커지고, 반복 재생이 어색해집니다. 핵심 부분만 짧게 자르세요.
GIF 변환에 적합한 영상, 아닌 영상
GIF에 잘 맞는 영상:
- 색상이 단순한 화면 캡처, UI 데모
- 배경이 정지된 상태에서 작은 움직임
- 짧고 반복 재생해도 자연스러운 클립
- 이모티콘, 반응 GIF
GIF보다 다른 형식이 나은 경우:
- 자연 풍경, 인물 같은 색상 풍부한 영상
- 5초 이상 영상으로 파일 크기 제한이 있는 경우
- 고화질이 필요한 경우
이런 경우에는 WebM이나 MP4를 쓰는 게 낫습니다. 트위터나 디스코드는 MP4도 자동 재생을 지원하기 때문에, 굳이 GIF로 변환하지 않아도 됩니다.
실제로 제가 쓰는 방법
팀 슬랙용 제품 데모 GIF는 이렇게 만듭니다.
1. 화면 녹화로 필요한 부분만 정확하게 캡처 (5초 이내)
2. GIF 변환 도구에서 10fps, 640px 너비, 128색 설정
3. 변환 후 크기 확인 (5MB 이내 목표)
4. 슬랙에서 미리 재생 확인 후 공유
처음에 만든 47MB GIF는 이 과정을 거쳐서 3.2MB로 줄었습니다. 화질도 슬랙에서 보기에는 충분했습니다.