Overview
용량이 큰 영상 파일을 클라우드에 백업하거나 공유할 때, 화질을 거의 손해보지 않고 용량을 1/10 수준으로 줄일 수 있는 방법이 있다. 바로 ffmpeg를 이용한 재인코딩이다.
이 글에서는 Mac 환경에서 ffmpeg로 동영상을 압축하는 방법을 정리한다. H.264 CRF 23(빠르고 호환성 좋음)과 H.265 CRF 28(압축률 좋음) 두 가지 옵션을 다루고, 실제 1080p 영상들을 압축했을 때의 결과 데이터도 함께 공유한다.
결론부터 말하면, 1080p 24fps 영상 기준 약 83~94% 용량 감소가 가능하다.

1. 환경 준비
1.1 ffmpeg 설치 확인
Homebrew가 설치되어 있다면 ffmpeg 설치는 한 줄이면 끝난다.
# 설치
brew install ffmpeg
# 설치 확인
which ffmpeg
ffmpeg -version | head -1
출력 예시는 다음과 같다.
/opt/homebrew/bin/ffmpeg
ffmpeg version 8.0 Copyright (c) 2000-2025 the FFmpeg developers
Apple Silicon Mac이면 `/opt/homebrew/bin/ffmpeg`, Intel Mac이면 `/usr/local/bin/ffmpeg` 에 설치된다.
2. 원본 영상 정보 확인
압축 옵션을 정하기 전에 원본의 비트레이트, 해상도, 길이를 먼저 본다. 비트레이트가 과하게 높은 영상일수록 압축 효과가 크다.
ffprobe -v error \
-show_entries stream=codec_name,codec_type,width,height,r_frame_rate,bit_rate \
-show_entries format=duration,bit_rate,size \
-of default=noprint_wrappers=0 \
~/Downloads/sample-video.mp4
출력 예시는 다음과 같다.
[STREAM]
codec_name=h264
codec_type=video
width=1920
height=1080
r_frame_rate=24000/1001
bit_rate=24742339
[/STREAM]
[STREAM]
codec_name=aac
codec_type=audio
bit_rate=317343
[/STREAM]
[FORMAT]
duration=173.464958
size=543593039
bit_rate=25069872
[/FORMAT]
해석하면 다음과 같다.
- 1920x1080 / 23.976fps / 2분 53초
- 비디오 비트레이트 24.7 Mbps → 1080p 치고는 매우 높다
- 파일 크기 약 518MB
1080p는 보통 5~8 Mbps여도 충분하기 때문에, 이런 영상은 압축 여지가 크다.
3. H.264로 압축하기 (CRF 23, 고품질)
H.264는 호환성이 가장 좋은 코덱이다. 어디서든 재생되고, 인코딩 속도도 빠르다. CRF 23은 시각적으로 원본과 거의 구분이 안 되는 수준이다.
ffmpeg -y -i ~/Downloads/sample-video.mp4 \
-c:v libx264 -preset slow -crf 23 \
-c:a aac -b:a 128k \
-movflags +faststart \
~/Downloads/sample-video-compressed.mp4
옵션 설명
| 옵션 | 의미 |
| -y | 출력 파일이 이미 있으면 덮어쓴다 |
| -c:v libx264 | 비디오 코덱을 H.264로 지정한다 |
| -preset slow | 인코딩 속도/압축률 트레이드오프. slow는 시간이 좀 더 걸리지만 같은 화질에서 파일이 더 작아진다 |
| -crf 23 | 품질 기준 (0=무손실, 18=시각적 무손실, 23=기본값, 28=낮은 화질). 18~28 사이에서 조절한다 |
| -c:a aac -b:a 128k | 오디오는 AAC 128kbps. 음성 위주면 128k로 충분하다 |
| -movflags +faststart | mp4 메타데이터를 파일 앞으로 이동시켜 웹 스트리밍 시 즉시 재생되게 한다 |
실측 결과
518MB → 57MB (약 89% 감소)로 줄었다. 출력 비트레이트는 약 2.6 Mbps다.
4. 더 크게 압축하기 — H.265 (HEVC) CRF 28
용량이 매우 큰 영상(2GB 이상)이거나, 300MB 같은 특정 크기 제약을 맞춰야 할 때는 H.265를 사용한다. 같은 화질에서 H.264 대비 40~50% 더 작은 파일을 만들 수 있다.
ffmpeg -y -i ~/Downloads/sample-video.mp4 \
-c:v libx265 -preset medium -crf 28 \
-tag:v hvc1 \
-c:a aac -b:a 128k \
-movflags +faststart \
~/Downloads/sample-video-compressed.mp4
H.265 전용 옵션 포인트
- -c:v libx265: 비디오 코덱을 H.265로 변경한다
- -crf 28: H.265의 CRF 스케일은 H.264와 다르다. H.265 CRF 28 ≈ H.264 CRF 23 정도의 체감 화질이다
- -tag:v hvc1: Apple 생태계(QuickTime, Finder 미리보기, iOS)에서 재생되도록 하는 핵심 태그다. 이 태그가 없으면 macOS에서 썸네일도 안 뜨고 재생이 안 될 수 있다
주의사항
- 인코딩 시간이 H.264 대비 약 1.5~2배 더 걸린다.
- CPU 점유율이 매우 높아서, M1/M2/M3 Mac에서도 다른 작업이 느려질 수 있다. 백그라운드로 돌리고 다른 일을 하는 편이 낫다.
- 구형 디바이스나 일부 브라우저에서는 H.265를 재생하지 못할 수 있다. 공유 대상이 다양하면 H.264가 안전하다.
5. 실측 비교 — 1080p 영상 4개
실제 1080p / 24fps 영상 4개를 위 옵션으로 압축한 결과는 다음과 같다.
| 파일 | 길이 | 원본 | 압축 후 | 감소율 | 코덱 |
| 영상 A (짧음) | 약 3분 | 518MB | 57MB | 89% | H.264 CRF 23 |
| 영상 B (중간) | 약 6분 | 206MB | 34MB | 83% | H.264 CRF 23 |
| 영상 C (긴 영상) | 약 23분 | 2.5GB | 171MB | 93% | H.265 CRF 28 |
| 영상 D (긴 영상) | 약 18분 | 2.0GB | 130MB | 94% | H.265 CRF 28 |
| 합계 | 약 5.2GB | 약 392MB | 약 92% |
짧은 영상은 H.264 CRF 23으로도 충분히 작아지지만, 긴 영상은 절대 용량이 크기 때문에 H.265로 넘어가는 게 효과적이다.
6. CRF 값별 가이드
CRF는 숫자가 작을수록 고화질, 클수록 저화질이다. 상황별로 다음 값을 추천한다.
H.264 (libx264)
| CRF | 용도 |
| 18 | 시각적 무손실. 보관용, 편집 원본 |
| 20 | 고품질. 중요한 영상 |
| 23 | 기본값. 일반적인 공유용 |
| 26 | 중간 압축. 용량 절약 |
| 28 | 저화질. 모바일 미리보기 등 |
H.265 (libx265)
| CRF | 용도 |
| 22 | 시각적 무손실 |
| 24 | 고품질 |
| 28 | 기본값. H.264 CRF 23과 비슷한 체감 |
| 30 | 강한 압축 |
| 32 | 매우 강한 압축 |
7. 백그라운드 실행 & 진행 상태 확인
긴 영상을 인코딩할 때는 터미널을 닫아도 작업이 계속되도록 백그라운드로 돌리는 게 편하다.
백그라운드 실행
# nohup + & 로 백그라운드 실행, 로그는 파일로 저장
nohup ffmpeg -y -i ~/Downloads/sample-video.mp4 \
-c:v libx265 -preset medium -crf 28 -tag:v hvc1 \
-c:a aac -b:a 128k -movflags +faststart \
~/Downloads/sample-video-compressed.mp4 \
> ~/Downloads/ffmpeg.log 2>&1 &
진행 상태 확인
# ffmpeg 프로세스 확인
pgrep -alf ffmpeg
# 출력 파일이 얼마나 커지고 있는지 확인 (실시간으로 늘어남)
ls -lh ~/Downloads/sample-video-compressed.mp4
# 로그 마지막 줄 확인 (실제 진행률은 frame=, fps= 라인에서 보임)
tail -3 ~/Downloads/ffmpeg.log
종료하기
# 정상 종료 신호 (현재 프레임까지 마무리하고 종료)
pkill -INT -f "libx265.*sample-video"
# 강제 종료 (출력 파일 손상 가능)
pkill -9 -f "libx265.*sample-video"
8. 자주 쓰는 추가 옵션
8.1 해상도 줄이기 (1080p → 720p)
300MB 같은 제약을 정말 빡빡하게 맞춰야 한다면 해상도까지 낮추는 게 가장 확실하다.
ffmpeg -y -i ~/Downloads/sample-video.mp4 \
-vf scale=-2:720 \
-c:v libx265 -preset medium -crf 28 -tag:v hvc1 \
-c:a aac -b:a 128k -movflags +faststart \
~/Downloads/sample-video-720p.mp4
- scale=-2:720은 세로 720, 가로는 비율을 유지하며 짝수로 자동 계산된다.
8.2 일부 구간만 잘라내기
# 시작 00:00:30부터 60초 길이만 추출
ffmpeg -y -i ~/Downloads/sample-video.mp4 \
-ss 00:00:30 -t 60 \
-c copy \
~/Downloads/sample-video-clip.mp4
- -c copy는 재인코딩 없이 자르기만 하므로 거의 즉시 끝난다.
8.3 오디오 제거
ffmpeg -y -i ~/Downloads/sample-video.mp4 \
-c:v copy -an \
~/Downloads/sample-video-mute.mp4
9. 한 번에 여러 파일 일괄 압축
폴더 안의 mp4 파일을 모두 압축하고 싶을 때 쓰는 셸 루프다.
cd ~/Downloads
for f in *.mp4; do
# 이미 압축본이면 건너뜀
[[ "$f" == *-compressed.mp4 ]] && continue
out="${f%.mp4}-compressed.mp4"
echo "▶ Encoding: $f → $out"
ffmpeg -y -i "$f" \
-c:v libx265 -preset medium -crf 28 -tag:v hvc1 \
-c:a aac -b:a 128k -movflags +faststart \
"$out"
done
10. 정리
Mac에서 동영상 압축의 핵심은 결국 다음 세 가지로 요약된다.
- 호환성 우선이면 H.264 CRF 23 — 어디서든 재생되고 충분히 작다
- 용량 우선이면 H.265 CRF 28 (+ -tag:v hvc1) — 절반 가까이 더 작아진다
- -movflags +faststart는 거의 항상 붙인다 — 웹에서 즉시 재생 가능하다
CRF 값 하나만 조절해도 화질과 용량의 균형을 자유롭게 잡을 수 있으니, 한 번 짧은 영상으로 테스트해보고 본인 영상에 맞는 값을 찾는 것을 추천한다.
원본은 항상 백업해두고, 압축본 재생을 끝까지 확인한 뒤에 원본을 정리하는 것이 좋다.
Reference
Somaz | DevOps Engineer | Kubernetes & Cloud Infrastructure Specialist
'Mac' 카테고리의 다른 글
| [MAC] 스페이스바 , 백스페이스 입력 시 점(.) 제거하기 (4) | 2024.11.20 |
|---|