콘텐츠 대표 이미지 - 스마트폰 영상 싱크가 어긋나는 이유 — 가변 프레임레이트(VFR)의 구조와 편집·인코딩 대응 가이드
영상변환 · 지식인의 숲

스마트폰 영상 싱크가 어긋나는 이유 — 가변 프레임레이트(VFR)의 구조와 편집·인코딩 대응 가이드

"폰으로 찍을 땐 멀쩡했는데, 편집 프로그램에 넣으니 뒤로 갈수록 입이 안 맞아요."

이 억울한 현상의 범인은 대부분 가변 프레임레이트입니다.

1. 먼저, 프레임레이트는 '약속'입니다

영상은 사실 정지 이미지의 연속입니다. 1초에 몇 장을 보여주느냐가 프레임레이트(fps)죠.

여기서 중요한 건 영상 파일 안에는 "시간"이 직접 적혀 있지 않다는 사실입니다.
파일에는 프레임 이미지들과, 각 프레임을 언제 보여줄지에 대한 타임스탬프 정보가 들어 있습니다.

CFR(Constant Frame Rate, 고정 프레임레이트)은 이 약속이 단순합니다.
"매 프레임은 정확히 1/30초 간격이다." 끝.

VFR(Variable Frame Rate, 가변 프레임레이트)은 다릅니다.
"이 프레임은 0.033초 뒤, 다음 건 0.041초 뒤, 그다음은 0.029초 뒤…"
프레임마다 간격이 제각각입니다.

핵심 요약

CFR = 일정한 간격의 메트로놈
VFR = 필요할 때만 치는 즉흥 드럼

문제는 대부분의 편집·변환 도구가 메트로놈을 전제로 설계되어 있다는 점입니다.

2. 왜 스마트폰은 굳이 VFR로 찍을까

스마트폰 제조사가 사용자를 괴롭히려고 VFR을 쓰는 게 아닙니다. 아주 현실적인 이유가 있습니다.

2-1. 저조도 자동 셔터 조절

어두운 곳에서 밝기를 확보하려면 셔터 속도를 느리게 해야 합니다.
그런데 30fps를 유지하려면 셔터는 최대 1/30초를 넘길 수 없죠.

그래서 폰은 과감하게 선택합니다.
"프레임 수를 24fps, 20fps까지 떨어뜨리고 대신 화면을 밝게 하자."

사용자 입장에선 "노이즈 없는 밝은 영상"이라 만족스럽지만, 파일 내부는 이미 VFR이 되어 있습니다.

2-2. 발열과 배터리, 그리고 SoC 스로틀링

4K 60fps 인코딩은 AP에 상당한 부하입니다.
온도가 올라가면 ISP·인코더가 순간적으로 프레임을 드롭합니다.
이때 드롭된 구간은 그냥 비워지는 게 아니라, 다음 프레임의 표시 시간이 길어지는 형태로 기록됩니다. 역시 VFR.

2-3. 용량 절약

정적인 장면에서 굳이 같은 그림을 60번 찍어 보낼 필요가 없습니다.
움직임이 적으면 프레임을 줄여 비트레이트를 아끼는 것이 모바일 기기의 합리적 전략입니다.

2-4. 화면 녹화 앱은 태생이 VFR

안드로이드 화면 녹화, OBS 기본 설정, 게임 캡처류는
"화면이 갱신될 때만 프레임을 기록"하는 방식이 효율적이라 VFR이 기본인 경우가 많습니다.

정리 — VFR은 '촬영 기기 입장에서는 최적화', '편집 도구 입장에서는 골칫거리'입니다.

3. 싱크는 정확히 어떤 원리로 밀리는가

여기가 이 글의 심장부입니다. 천천히 따라오세요.

오디오는 거의 항상 CFR입니다.
48,000Hz 샘플레이트라면 1초에 정확히 48,000개 샘플. 이건 흔들리지 않습니다.

반면 비디오는 VFR로 들쭉날쭉합니다.
편집 프로그램이 이 영상을 불러오면서 "아, 이건 30fps 영상이구나"라고 단정해 버리면 사고가 시작됩니다.

실제로는 평균 26fps로 촬영된 60초짜리 영상인데, 프로그램이 모든 프레임을 1/30초 간격으로 균등 배치하면?

실제 촬영: 60초 동안 1,560프레임 (평균 26fps)
편집기 해석: 1,560프레임 ÷ 30fps = 52초

→ 비디오는 52초에서 끝나는데
→ 오디오는 60초까지 이어짐
→ 후반부로 갈수록 8초 어긋남

이것이 "뒤로 갈수록 점점 심해지는 싱크 밀림"의 정체입니다.
일정하게 밀리는 게 아니라 누적되기 때문에 앞부분만 확인하고 넘어가면 반드시 당합니다.

프레임 타임스탬프 비교 CFR · 30fps 고정 간격 33.3ms · 일정 VFR · 평균 26fps (저조도 구간 발생) 간격 33ms ~ 50ms · 불규칙 어두운 장면 = 프레임 간격 확대 오디오 (항상 CFR) → 후반부 누적 오차 발생 구간 * 모식도이며 실제 간격은 촬영 환경에 따라 달라집니다.

4. 내 영상이 VFR인지 3분 만에 확인하기

방법 1 — MediaInfo (가장 쉬움)

무료 툴 MediaInfo에서 영상을 열고 Video 탭을 봅니다.

표시 항목의미
Frame rate mode : ConstantCFR — 안심
Frame rate mode : VariableVFR — 변환 필요
Minimum / Maximum frame rate 표기됨VFR 확정 신호

방법 2 — ffprobe (정확함)

ffprobe -v error -select_streams v:0 \
  -show_entries stream=r_frame_rate,avg_frame_rate,nb_frames,duration \
  -of default=noprint_wrappers=1 input.mp4

r_frame_rate(선언된 기준 레이트)와 avg_frame_rate(실제 평균)가 눈에 띄게 다르면 VFR입니다.

예: r_frame_rate=30/1인데 avg_frame_rate=2609/100(=26.09) → 전형적인 VFR.

방법 3 — 프레임 타임스탬프 직접 확인

ffprobe -v error -select_streams v:0 \
  -show_entries frame=pkt_pts_time \
  -of csv=p=0 input.mp4 | head -40

출력된 숫자들의 차이가 일정하지 않으면 100% VFR입니다.

주의 — 폰 갤러리나 플레이어에서 잘 재생된다고 CFR인 건 아닙니다.
VLC·MX플레이어 등 플레이어는 타임스탬프를 그대로 존중해서 재생하므로 문제가 드러나지 않습니다.
문제는 "타임라인에 균등 배치"하는 편집 프로그램에서만 폭발합니다.

5. 해결의 정석 — CFR로 '재타이밍' 변환하기

가장 확실한 해법은 편집 전에 영상을 CFR로 변환하는 것입니다.
이 과정을 정규화(normalize) 또는 트랜스코딩 프리프로세싱이라 부릅니다.

5-1. FFmpeg 표준 명령

ffmpeg -i input.mp4 -vsync cfr -r 30 \
  -c:v libx264 -preset slow -crf 18 -pix_fmt yuv420p \
  -c:a aac -b:a 192k -ar 48000 output_cfr.mp4

각 옵션의 의미를 정확히 이해해야 합니다.

옵션역할
-vsync cfr프레임을 복제·삭제해 일정 간격으로 재배치 (최신 빌드는 -fps_mode cfr)
-r 30목표 고정 프레임레이트 지정
-crf 18화질 기준값. 낮을수록 고화질(18~20 권장)
-pix_fmt yuv420p호환성 확보. 생략 시 일부 편집기에서 재생 불가
-ar 48000오디오 샘플레이트 통일 (혼합 시 싱크 사고 예방)

5-2. 어떤 fps로 맞춰야 하나

무조건 60fps로 올리는 건 낭비입니다. 원칙은 이렇습니다.

① 실제 평균 fps보다 같거나 높은 값으로.
평균 26fps 소스를 24fps로 내리면 프레임이 버려져 움직임이 툭툭 끊깁니다.

② 최종 출력 규격에 맞춰 통일.
프로젝트 전체를 29.97 또는 30으로 통일하는 편이 관리가 쉽습니다.

③ 방송 규격을 섞지 말 것.
30과 29.97을 섞으면 1000프레임당 1프레임씩 어긋나며, 장시간 영상에서 체감됩니다.

5-3. 무손실에 가깝게 가고 싶다면

재인코딩 화질 열화가 걱정된다면 중간 코덱(인트라프레임 코덱)을 쓰는 방법이 있습니다.

# DNxHR (편집용 중간 코덱)
ffmpeg -i input.mp4 -vsync cfr -r 30 \
  -c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p \
  -c:a pcm_s16le output.mov

용량은 크게 늘지만 여러 번 편집·렌더링해도 열화가 거의 없습니다.

6. 프레임 복제 vs 보간 — 무엇을 선택할까

VFR → CFR 변환에서 부족한 프레임을 어떻게 채우느냐는 결과물 품질을 좌우합니다.

방식 A · 프레임 복제 (기본)

-vsync cfr의 기본 동작. 직전 프레임을 그대로 한 번 더 씁니다.
빠르고 안전하지만 미세한 끊김(저더)이 생길 수 있습니다.
→ 대화 영상, 브이로그, 강의 영상에 적합.

방식 B · 모션 보간

ffmpeg -i input.mp4 \
  -vf "minterpolate=fps=30:mi_mode=mci:mc_mode=aobmc:vsbmc=1" \
  -c:v libx264 -crf 18 -c:a copy output_smooth.mp4

앞뒤 프레임의 움직임을 분석해 없던 중간 프레임을 생성합니다.
움직임은 부드럽지만 처리 시간이 수십 배 길고, 복잡한 장면에서 뭉개짐·유령 잔상(artifact)이 발생할 수 있습니다.
→ 슬로우모션 제작, 움직임이 단순한 클립에 한정 사용 권장.

실무 판단
90%의 경우 프레임 복제로 충분합니다.
보간은 "이 클립만큼은 반드시 부드러워야 한다"는 확신이 있을 때만.

7. 기기별·앱별 실전 체크포인트

아이폰 / iOS

기본 카메라 앱은 HEVC(H.265) + VFR이 표준입니다.
특히 저조도에서 프레임이 크게 흔들립니다.

대응: 설정 → 카메라 → 포맷 → '높은 호환성'으로 바꾸면 H.264로 저장되어 편집기 호환성이 좋아집니다.
다만 VFR 특성 자체는 완전히 사라지지 않으므로 변환은 여전히 권장됩니다.

안드로이드 / 갤럭시·픽셀 계열

대부분 VFR이며, 기기마다 편차가 큽니다.
프로 비디오 모드에서 셔터·ISO를 수동 고정하면 프레임레이트가 안정되는 경우가 많습니다.
전문 촬영 앱(Filmic Pro 등)은 CFR 강제 옵션을 제공합니다.

화면 녹화 · 게임 캡처

가장 심각한 VFR 소스입니다. 정적인 화면에서 5fps, 스크롤 시 60fps처럼 극단적으로 요동칩니다.
OBS 사용 시 출력 설정 → 고급 → 프레임레이트 고정을 켜두세요.

액션캠 · 드론 · DSLR

이 기기들은 대체로 CFR이 기본입니다. 방송·영화 워크플로를 전제로 설계됐기 때문입니다.
"폰 영상만 유독 말썽인" 이유가 여기 있습니다.

소스VFR 위험도권장 조치
스마트폰 기본 카메라높음편집 전 CFR 변환
화면 녹화 앱매우 높음녹화 설정에서 고정 또는 변환
전문 촬영 앱낮음CFR 옵션 확인
미러리스·액션캠매우 낮음그대로 사용 가능
다운로드 웹 영상중간MediaInfo로 확인

8. 편집 프로그램별 반응 차이

같은 VFR 파일이라도 프로그램마다 대처가 다릅니다. 이걸 알면 원인 추적이 훨씬 빨라집니다.

Adobe Premiere Pro — 근래 버전은 VFR을 어느 정도 인식하지만, 길고 편차 큰 소스에서는 여전히 밀립니다. 오디오를 분리한 뒤 동기화(Merge Clips) 로 재정렬하는 우회법이 쓰입니다.

DaVinci Resolve — 타임스탬프 처리에 비교적 엄격하며, 미디어 풀에서 프레임레이트 불일치 경고를 띄웁니다. 다만 무료판은 HEVC 디코딩 제약이 있어 변환이 사실상 필수인 경우가 많습니다.

Final Cut Pro — iOS 생태계 최적화 덕에 VFR 처리가 가장 매끄러운 편이지만, 외부 소스 혼합 시 문제가 드러납니다.

Vrew · CapCut 등 모바일/자동 편집 툴 — 내부에서 자동 정규화를 수행하는 경우가 많아 오히려 문제가 적습니다. 대신 화질이 임의로 재인코딩됩니다.

실무 원칙
프로그램의 자동 보정을 믿지 말고, 입고 단계에서 전부 CFR로 정규화하는 워크플로를 만드세요.
사후 수습보다 사전 변환이 언제나 저렴합니다.

9. 이미 편집을 끝낸 뒤 발견했다면

가장 아픈 상황이죠. 그래도 방법은 있습니다.

① 오디오 전체 스트레치
비디오 길이와 오디오 길이 비율을 계산해 오디오 속도를 미세 조정합니다.
비율이 1~2% 이내면 피치 변화를 거의 느끼지 못합니다.

# 오디오를 0.98배 느리게 (피치 유지)
ffmpeg -i out.mp4 -filter:a "atempo=0.98" -c:v copy fixed.mp4

② 구간 분할 재정렬
오차가 비선형으로 누적됐다면 한 번의 스트레치로 못 맞춥니다.
클립을 30초~1분 단위로 잘라 각각 싱크를 맞추는 수작업이 필요합니다.

③ 결론은 재작업
솔직히 말해, 원본을 CFR로 변환한 뒤 프로젝트의 미디어를 교체(Replace Footage) 하는 것이 가장 빠릅니다.
컷 편집 정보는 대부분 유지되므로 생각보다 손해가 적습니다.

10. 배치 처리 — 폴더 통째로 정규화하기

클립이 수십 개라면 하나씩 처리할 순 없습니다.

# Windows PowerShell
Get-ChildItem *.mp4 | ForEach-Object {
  ffmpeg -i $_.Name -fps_mode cfr -r 30 `
    -c:v libx264 -crf 18 -pix_fmt yuv420p `
    -c:a aac -b:a 192k -ar 48000 "cfr_$($_.Name)"
}
# macOS / Linux
for f in *.mp4; do
  ffmpeg -i "$f" -fps_mode cfr -r 30 \
    -c:v libx264 -crf 18 -pix_fmt yuv420p \
    -c:a aac -b:a 192k -ar 48000 "cfr_$f"
done

GUI를 선호한다면 HandBrake에서 Video 탭 → Framerate → Constant Framerate 선택으로 동일한 결과를 얻을 수 있습니다.
"Same as source"는 VFR을 그대로 유지하므로 반드시 Constant를 명시해야 합니다.

권장 워크플로 4단계 1. 촬영 가능하면 고정 2. 진단 MediaInfo 확인 3. 정규화 CFR 일괄 변환 4. 편집 싱크 걱정 없음 체크 포인트 · 프레임레이트 모드 : Constant 인가 · 오디오 샘플레이트 48kHz 로 통일했는가 · 프로젝트 fps 와 소스 fps 가 일치하는가

11. 촬영 단계에서 예방하는 법

가장 좋은 해결은 애초에 문제를 만들지 않는 것입니다.

① 조명을 충분히 확보하세요.
VFR의 최대 원인은 저조도입니다. 밝으면 폰은 굳이 프레임을 줄이지 않습니다.
창가에서 찍거나 저렴한 LED 하나만 추가해도 프레임 안정성이 확연히 달라집니다.

② 프로/수동 모드를 사용하세요.
셔터 속도를 1/60로 고정하면 자동 조절 여지가 사라져 CFR에 가까워집니다.

③ 4K 60fps를 남발하지 마세요.
발열로 인한 프레임 드롭 위험이 큽니다. 유튜브 업로드 기준이면 4K 30fps 또는 1080p 60fps가 훨씬 안정적입니다.

④ 장시간 촬영은 나눠 찍으세요.
오차는 시간에 비례해 누적됩니다. 10분 클립 하나보다 2분 클립 다섯 개가 안전합니다.

⑤ 중요한 촬영은 오디오를 따로 녹음하세요.
별도 레코더로 녹음하고 슬레이트(박수)로 싱크를 맞추면, 영상 프레임이 흔들려도 기준점이 생깁니다.

12. 자주 나오는 질문 정리

Q. CFR로 바꾸면 화질이 나빠지나요?

재인코딩이므로 이론상 손실이 있습니다. 다만 CRF 18 이하로 설정하면 육안 구분이 거의 불가능합니다.
-c:v copy로는 프레임 타이밍을 바꿀 수 없으므로 재인코딩은 불가피합니다.

Q. 파일 용량이 커지는데요?

맞습니다. 없던 프레임을 채우고 비트레이트를 넉넉히 주기 때문입니다.
편집용 중간 파일이므로 최종 출력 후 삭제하면 됩니다.

Q. 유튜브에 그냥 올리면 안 되나요?

단일 클립을 편집 없이 올린다면 대체로 문제없습니다. 유튜브가 서버에서 정규화하니까요.
문제는 편집·합성·자막 작업이 들어갈 때 발생합니다.

Q. 자막 싱크만 유독 안 맞아요.

같은 원인입니다. 자막은 절대 시간(초) 기준이고, 영상은 프레임 기준으로 해석되기 때문입니다.
영상을 CFR로 고정한 뒤 자막을 다시 생성하는 것이 정답입니다.

Q. -vsync와 -fps_mode 중 뭘 써야 하나요?

FFmpeg 5.0 이후 -vsync는 -fps_mode로 대체 권장되고 있습니다.
구버전 호환이 필요하면 -vsync cfr, 최신 환경이면 -fps_mode cfr를 사용하세요.

마무리 — 원인을 알면 공포는 사라진다

싱크 밀림은 영상 편집을 처음 시작한 사람이 가장 먼저 만나는 "내가 뭘 잘못했지?" 순간입니다.
하지만 이제 알게 되셨듯, 당신의 실수가 아니라 파일 구조의 문제였습니다.

기억할 것은 딱 세 줄입니다.

1. 스마트폰 영상은 대체로 VFR이다.
2. 편집 전에 MediaInfo로 확인한다.
3. FFmpeg 또는 HandBrake로 CFR 변환 후 작업한다.

이 세 단계를 습관으로 만들면, 싱크 문제로 밤을 새우는 일은 다시 없을 겁니다.

영상 변환·인코딩 워크플로를 더 깊이 다루고 싶거나, 프로젝트 규모가 커져 전문가의 손이 필요해졌다면 재능넷의 영상 편집·인코딩 분야 전문가들에게 자문을 구하는 것도 좋은 선택입니다.
기술적 원리를 이해한 상태에서 묻는 질문은, 훨씬 정확한 답을 불러옵니다.

오늘 촬영한 그 파일, 지금 바로 MediaInfo에 한 번 넣어보세요.
Frame rate mode 한 줄이 당신의 다음 편집을 훨씬 편하게 만들어 줄 테니까요.

댓글 작성

이 글에 대한 여러분의 생각을 들려주세요

댓글 0