인터넷에서 영상을 GIF로 만드는 법을 찾아보면 대부분 영상을 남의 서버에 올리는 방식이다. 파일 용량이나 길이에 제한이 있는 경우가 많고, 내 영상이 다른 곳에 올라가는 것도 찜찜했다.
맥미니에서 내 영상을 직접 GIF로 만드는 방법을 찾다 보니 ffmpeg 한 줄이면 충분했다. 다만 아무렇게나 만들면 용량이 너무 커서 공유하기 어렵다. 이 글을 따라 하면 영상을 맥미니에서 최적화된 GIF로 만드는 법을 익힐 수 있다.
시작하기 전, 몇 가지 준비물이 필요하다. 애플 실리콘 칩이 들어간 맥미니를 쓰고 있고, 터미널 명령어를 다룰 줄 알아야 한다.
Homebrew (brew)가 설치되어 있어야 한다. brew는 macOS에서 앱을 설치하고 관리하는 도구인데, 아직 설치하지 않았다면 터미널에서 아래 명령어를 입력해 설치한다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

설치가 끝나면 brew가 잘 작동하는지 brew --version으로 확인해 본다.
brew --version
FFmpeg 설치하기
ffmpeg은 영상과 오디오를 다루는 데 거의 모든 기능을 제공하는 강력한 도구다. 영상을 GIF로 바꾸는 건 ffmpeg이 할 수 있는 수많은 작업 중 하나에 불과하다. 이 녀석을 설치하는 건 아주 간단하다. 터미널을 열고 다음 명령어를 입력한다.
brew install ffmpeg
설치가 끝나면 ffmpeg이 잘 설치되었는지 확인한다.
ffmpeg -version
버전 정보가 길게 출력되면 성공이다. 내 맥미니 M1에서는 설치하는 데 채 1분도 걸리지 않았다.
기본 변환 방식의 용량 문제 확인하기
ffmpeg을 사용해 영상을 GIF로 바꾸는 가장 기본적인 명령어는 아주 단순하다. input.mp4를 원하는 영상 파일 이름으로 바꾸고, output.gif는 만들 GIF 파일 이름으로 설정한다.
ffmpeg -i input.mp4 output_single_pass.gif
나는 처음에 이 명령어를 찾아내고 '오, 이렇게 쉽다고?' 생각했다. 15초짜리 풀HD (1920x1080) 영상 하나를 이 명령어로 변환해봤다. 결과는 충격적이었다.
GIF 파일이 25MB나 나왔다. 스마트폰으로 대충 찍은 영상이었는데도 그랬다. 몇 초짜리 영상으로는 괜찮겠지만, 조금만 길어져도 용량이 감당 안 될 수준이었다. 이런 용량으로는 어디에 공유하기도 어렵다.
이대로는 안 되겠다 싶어 검색을 좀 더 해보니, GIF의 특성 때문이라는 걸 알았다. GIF는 최대 256가지 색상만 표현할 수 있고, 영상을 구성하는 모든 색상을 그대로 담으려 하면 용량이 커질 수밖에 없다는 내용이었다. 그래서 ffmpeg에는 이 문제를 해결할 방법이 따로 준비되어 있었다. 핵심은 색상표(palette)를 먼저 만드는 것이다.
최적화된 GIF 두 단계로 변환하기
GIF의 용량을 드라마틱하게 줄이려면, 원본 영상에서 GIF에 최적화된 색상표를 추출하고, 그 색상표를 사용해 GIF를 만들어야 한다. 두 단계로 나뉜다.
1단계: GIF 색상표 생성
먼저 원본 영상 input.mp4에서 GIF 변환에 사용할 최적의 색상표를 palette.png라는 이름으로 추출한다.
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,palettegen" palette.png
이 명령어를 좀 더 자세히 뜯어보자.
-i input.mp4: 입력 영상 파일이다.-vf:video filter의 약자다. 영상에 필터를 적용하겠다는 뜻이다. 큰따옴표 안에 여러 필터 옵션을 콤마(,)로 구분해 넣었다.fps=10: 초당 프레임 수를 10으로 설정한다. 영상은 보통 초당 24~30프레임인데, GIF는 그보다 낮게 설정해도 충분히 자연스럽게 보이고 용량도 크게 줄어든다. 10~15 정도가 적당하다.scale=480:-1: 영상의 가로 해상도를 480픽셀로 줄인다.-1은 세로 해상도를 가로 비율에 맞춰 자동으로 조절하라는 의미다. 해상도를 줄이는 건 용량을 줄이는 가장 효과적인 방법 중 하나다.flags=lanczos:lanczos는 고품질 영상 리사이즈(크기 조절) 알고리즘이다. 영상을 줄일 때 화질 손실을 최소화해준다.palettegen: 이 필터가 영상에서 최적의 256가지 색상표를 뽑아내palette.png파일로 저장한다.
15초짜리 영상을 이 명령어로 처리해보니 palette.png 파일이 생성됐고, 시간은 약 4초 정도 걸렸다.
2단계: 생성된 색상표를 사용해 GIF 변환
이제 1단계에서 만든 palette.png를 가지고 최종 GIF를 만든다.
여기서 추가되거나 바뀐 부분을 보자.
-i input.mp4 -i palette.png: 이번에는 입력 파일이 두 개다. 원본 영상과 함께 만들어둔 색상표 파일을 입력으로 넣는다.input.mp4가 첫 번째 입력(0:)이고palette.png가 두 번째 입력(1:)이 된다.
ffmpeg -i input.mp4 -i palette.png -filter_complex "fps=10,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output_optimized.gif
-filter_complex: 여러 입력 파일에 복잡한 필터 체인을 적용할 때 사용한다.fps=10,scale=480:-1:flags=lanczos[x]: 1단계에서와 같은 프레임 수와 해상도, 리사이즈 알고리즘을 적용한다. 이 결과물을[x]라는 이름으로 저장한다. 이는 다음 필터의 입력으로 사용된다.[x][1:v]paletteuse:[x](영상 스트림)와[1:v](두 번째 입력 파일인palette.png의 비디오 스트림, 즉 색상표)를paletteuse필터에 연결한다.paletteuse필터는 주어진 색상표를 영상에 적용해 최종 GIF를 만든다.
이 명령어로 최종 GIF 파일을 만들어보니 약 5초가 걸렸다.
변환 결과와 성능 차이 분석하기
직접 해보고 나니 숫자만큼 확실한 게 없다. 똑같은 15초 길이의 1080p MP4 영상(원본 파일 크기 8.7MB)을 가지고 위 두 가지 방법으로 GIF를 만들고 그 결과물을 측정했다.
| 변환 방식 | 파일 크기 | 변환 시간 |
|---|---|---|
| 한 단계 변환 | 25.1 MB | 3.2초 |
| 두 단계 변환 (최적화) | 2.5 MB | 9.0초 (색상표 생성 3.8초 + GIF 변환 5.2초) |
결과를 보면 확연한 차이를 알 수 있다. 한 단계로 만든 GIF는 25.1MB였다. 하지만 색상표를 이용해 두 단계로 만든 GIF는 2.5MB로, 무려 10배 이상 용량이 줄어들었다.
변환 시간은 두 단계 방식이 약 3배 길었지만, 얻은 용량 최적화를 생각하면 충분히 감수할 만한 시간이었다. 영상을 공유하거나 웹사이트에 올릴 때 용량은 정말 중요하다. 특히 영상 길이가 길어질수록 이 용량 차이는 훨씬 더 크게 벌어진다.
처음 몇 번은 용량 때문에 좌절했지만, 직접 측정하며 해법을 찾았다.
핵심 팁과 주의점
fps조절의 중요성
GIF는 짧은 클립을 보여주는 데 적합한 포맷이다.fps를 20 이상으로 높이면 용량이 눈덩이처럼 불어나기 쉽다. 대부분의 경우fps=10에서fps=15사이가 가장 효율적이다.- 해상도
scale조절scale=480:-1처럼 가로 480픽셀 정도면 스마트폰 화면에서 보기에 충분하다. 해상도를 절반만 줄여도 용량은 제곱에 비례해서 줄어든다. 예를 들어, 가로 960픽셀에서 480픽셀로 줄이면 해상도는 1/4이 된다 (960*960 vs 480*480). 용량도 크게 줄어든다. 한 시간짜리 영상을 통째로 GIF로 만들겠다고 욕심내다가 맥미니 쿨러가 시끄럽게 돌면서 고생했던 기억이 있다. - 원본 영상의 길이
아무리 최적화해도 원본 영상 길이가 길면 GIF 용량도 커질 수밖에 없다. GIF는 짧고 반복적인 클립에 최적화된 포맷이다. 중요한 장면만 짧게 잘라서 만드는 것이 현명하다.
이 경험을 통해 직접 테스트하고 수치를 비교해보는 습관이 괜한 시간을 절약해준다는 걸 다시금 깨달았다.

'맥미니를 서버로' 카테고리의 다른 글
| 서치 콘솔 사이트맵 색인 0일 때, 진짜 색인 여부 확인하는 법 (0) | 2026.09.30 |
|---|---|
| 파이썬 패키지 설치가 느릴 때, uv로 바꾸면 얼마나 빨라지나 (0) | 2026.09.16 |
| ffmpeg 사용법, 맥에서 자주 쓰는 명령만 골라서 (0) | 2026.09.13 |
| 맥미니를 24시간 서버로 돌리면 뜨거워질까 (0) | 2026.09.12 |
| sudo 없이 Tailscale 쓰기, 재부팅해도 안 죽게 만들기 (0) | 2026.09.10 |