영상을 자르면 왜 화질이 나빠질까 — 키프레임 이야기
같은 자르기인데 어떤 도구는 1초 만에 무손실로 끝나고 어떤 도구는 몇 분씩 돌며 화질을 깎는다. 영상이 저장되는 방식 하나로 전부 설명된다.
영상 앞부분 10초만 잘라내려는데, 어떤 도구는 1초 만에 끝나고 어떤 도구는 몇 분씩 돌면서 화질까지 눈에 띄게 나빠진다. 같은 "자르기"인데 왜 이렇게 다를까. 답은 영상이 저장되는 방식에 있다. 이 원리 하나를 알면 "왜 하필 여기서는 못 자르나", "왜 끝 자르기는 항상 빠른가" 같은 의문이 전부 풀린다.
영상은 모든 장면을 저장하지 않는다
초당 30프레임짜리 1분 영상은 사진 1,800장에 해당한다. 사진 1,800장을 그대로 저장하면 용량을 감당할 수 없으니, 영상 압축은 한 가지 관찰에서 출발한다 — 연속된 프레임은 서로 거의 똑같다는 것이다.
그래서 영상 파일 안에는 두 종류의 프레임이 섞여 있다. 몇 초에 한 번씩 나오는 키프레임은 온전한 사진 한 장이다. 그 사이의 나머지 프레임들은 사진이 아니라 "직전 장면에서 무엇이 달라졌는지"라는 차이 정보만 담는다. 화면 대부분이 그대로고 사람 팔만 움직였다면, 팔 부분의 변화만 기록하는 식이다. 이 구조 덕에 영상 용량이 사진 1,800장의 몇십 분의 일로 줄어든다.
대가도 있다. 차이 정보만 가진 프레임은 혼자서는 그림이 되지 못한다. 그 프레임을 화면에 띄우려면 직전 키프레임부터 차이를 차곡차곡 다시 적용해 와야 한다. 재생 위치를 옮겼을 때 영상이 잠깐 머뭇거리는 것도, 플레이어가 가까운 키프레임을 찾아 거기서부터 계산해 오는 시간이다.
왜 아무 지점에서나 자르지 못하는가
이제 자르기를 보자. 영상을 특정 지점부터 남기고 싶다는 것은, 그 지점을 새 영상의 첫 프레임으로 만들겠다는 뜻이다. 그런데 그 지점이 키프레임이 아니라면? 새 영상의 첫 프레임이 "차이 정보"인데, 참조할 직전 장면이 잘려 나가고 없다. 그림이 성립하지 않는 것이다.
도구가 택할 수 있는 길은 둘뿐이다.
- 키프레임에서 자른다 — 잘린 첫 프레임이 온전한 사진이니 아무것도 다시 계산할 필요가 없다. 데이터를 그대로 옮겨 담기만 하면 되므로 몇 초 만에 끝나고, 화질 손실이 정확히 0이다. 이것이 무손실 자르기다.
- 원하는 지점에서 정확히 자른다 — 앞 키프레임부터 차이를 적용해 그림을 복원한 뒤, 그 지점부터 영상 전체를 처음부터 다시 압축(재인코딩)한다. 시간이 오래 걸리고, 손실 압축을 한 번 더 거치므로 화질이 미세하게 깎인다.
재미있는 비대칭이 하나 있다. 끝을 자르는 것은 언제나 무손실이다. 뒤쪽 프레임들은 앞을 참조하지 뒤를 참조하지 않으므로, 뒷부분을 버려도 남은 프레임들의 참조는 하나도 깨지지 않는다. "앞 자르기는 조건부, 끝 자르기는 공짜"가 영상 편집의 기본 물리 법칙인 셈이다.
키프레임 간격은 일정하지 않다
키프레임이 정확히 2초마다 하나씩 있다면 예측이라도 쉬울 텐데, 실제로는 그렇지 않다. 인코더는 장면이 크게 바뀌는 순간(카메라 전환, 화면 전체가 움직이는 순간)에 키프레임을 추가로 박는다. 차이 정보로 담기엔 달라진 게 너무 많아서다. 그래서 대화 장면에서는 키프레임이 몇 초씩 벌어지고, 액션 장면에서는 촘촘해진다. 화면 녹화나 전문가용 형식 중에는 아예 모든 프레임이 키프레임인 것도 있다 — 용량을 내주고 "어디서든 자르고 편집할 자유"를 산 경우다.
실전에서는 이렇게 정리된다
- 화질이 우선이면: 시작점을 가장 가까운 키프레임에 맞춘다. 몇 초쯤 더 붙어 나오는 것을 감수하는 대신 화질 손실 0, 처리 시간도 몇 초다. 동영상 자르기 도구는 타임라인에 키프레임 위치를 눈금으로 깔아 두고, 시작 손잡이를 눈금 근처로 가져가면 자석처럼 붙여준다. 지금 위치가 무손실인지 재인코딩인지도 배지로 미리 보여준다.
- 정확한 지점이 우선이면: 재인코딩을 받아들인다. 대신 이 일을 한 번만 해야 한다 — 재인코딩된 결과물을 또 잘라 또 재인코딩하면 손실이 겹겹이 쌓인다. 편집은 항상 원본에서 시작하는 것이 원칙이다.
- 구간을 여러 개 뽑아야 하면: 매번 원본에서 잘라낸다. A를 자른 결과에서 B를 자르는 식으로 이어가면, 뒤로 갈수록 재인코딩이 누적된 파일을 얻게 된다.
덧붙여 — "변환"도 같은 원리로 공짜일 수 있다
아이폰의 MOV를 MP4로 바꾸는 일도 마찬가지다. MOV와 MP4는 내용물(압축된 영상 데이터)의 형식이 같고 겉포장(컨테이너)만 다른 경우가 대부분이라, 내용물을 건드리지 않고 포장만 바꾸면 화질 손실 없이 몇 초 만에 끝난다. MOV → MP4 변환 도구가 그 방식이다. 자르기든 변환이든 결론은 하나로 모인다 — 압축된 데이터를 다시 압축하지 않는 경로가 있다면 그 길이 항상 옳고, 좋은 도구는 그 길이 가능한지 먼저 알려주는 도구다.