Mac

Mac에서 ffmpeg로 동영상 압축하기 (H.264 / H.265 실전 가이드)

Somaz 2026. 5. 26. 15:26
728x90
반응형

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에서 동영상 압축의 핵심은 결국 다음 세 가지로 요약된다.

  1. 호환성 우선이면 H.264 CRF 23 — 어디서든 재생되고 충분히 작다
  2. 용량 우선이면 H.265 CRF 28 (+ -tag:v hvc1) — 절반 가까이 더 작아진다
  3. -movflags +faststart는 거의 항상 붙인다 — 웹에서 즉시 재생 가능하다

 

 

CRF 값 하나만 조절해도 화질과 용량의 균형을 자유롭게 잡을 수 있으니, 한 번 짧은 영상으로 테스트해보고 본인 영상에 맞는 값을 찾는 것을 추천한다.

 

원본은 항상 백업해두고, 압축본 재생을 끝까지 확인한 뒤에 원본을 정리하는 것이 좋다.

 

 

 

 

 

 

 

 

 

 

 

 


Reference

 

 

 

 

 

Somaz | DevOps Engineer | Kubernetes & Cloud Infrastructure Specialist

728x90
반응형

'Mac' 카테고리의 다른 글

[MAC] 스페이스바 , 백스페이스 입력 시 점(.) 제거하기  (4) 2024.11.20