C.W.K.
Stream
Lesson 05 of 10 · published

Frame Rate — Sync 안 깨고 FPS 변경

~10 min · fps, frame-rate, vfr, cfr

Level 0Viewer
0 XP0/73 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

Frame rate 변경 세 방법

FFmpeg에 frame rate 변경 세 가지로 요청 가능. 다르게 동작하고, 잘못된 거 쓰면 A/V sync 깨져.

  • -r <fps> output flag — frame drop/duplicate해서 output이 그 fps. Container timestamp 보존. Audio sync 보존.
  • -vf fps=<fps> — 같은 idea, filter 형태. 다른 filter와 chain할 때 써.
  • -vf setpts + -af atempo — 실제로 video를 slow/fast (Track 5 lesson 8 참조).

흔한 변환

업로드 사이즈 위해 60 → 30 fps: 매 다른 frame drop. 24 → 60 fps: frame duplicate. 둘 다 motion 보간 안 함 (synthetic in-between frame 없음). Motion 보간엔 minterpolate filter 또는 AI 도구 (Topaz, RIFE).

가변 frame rate (VFR)

화면 녹화, 폰 capture, 일부 streaming source는 VFR — frame이 source가 emit 하고 싶을 때마다 와. CFR 가정하는 editor를 깨. -vsync cfr -r 30 또는 fps=30 filter로 CFR로 변환.

Code

Frame rate recipe·bash
# 60fps → 30fps 더 작은 업로드
ffmpeg -i in.mp4 -r 30 -c:v libx264 -crf 22 -c:a copy out_30.mp4

# 같은 거 filter 형태로 (chain 에서 더 명확)
ffmpeg -i in.mp4 -vf fps=30 -c:v libx264 -crf 22 -c:a copy out_30b.mp4

# VFR 화면 녹화 → editor 위해 CFR
ffmpeg -i screen.mov -vf fps=30 -vsync cfr -c:v libx264 -crf 20 -c:a copy out_cfr.mp4
Motion 보간 (synthetic in-between frame)·bash
# 진짜 30→60, motion synthesis (느림, 가끔 ghosty)
ffmpeg -i in.mp4 \
  -vf "minterpolate=fps=60:mi_mode=mci:mc_mode=aobmc:vsbmf=1:scd=fdiff" \
  -c:v libx264 -crf 20 -c:a copy out_smooth.mp4

# 진짜 부드러운 slow-mo 또는 24→60 변환 원할 때만 써.
# 'fps 줄이기' 작업 대부분엔 plain -r 가 답.

External links

Exercise

60fps clip 찾거나 다운. -r 30 으로 30fps 변환, output에 r_frame_rate=30/1 인지 ffprobe 로 검증. 그 다음 24fps source를 minterpolate=fps=60:mi_mode=mci 로 60fps 변환. 둘을 나란히 시청 — 두 번째 건 보이는 (가끔 ghosty) synthetic motion 있어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.