화질은 일정하게, 용량은 유동적으로
CRF는 Constant Rate Factor의 약자이고, 이 이름 자체가 하나의 철학을 담고 있습니다. 인코더에게 비트를 얼마나 쓸지 지시하는 대신("8 Mbps짜리 파일로 만들어 줘"), 화질을 얼마나 유지할지를 지시하고("이 정도로 보이게 유지해 줘") 그에 필요한 만큼 비트를 쓰게 하는 방식입니다. 조용한 인터뷰 장면은 적은 비트로도 훌륭해 보이지만, 색종이가 흩날리는 액션 장면에는 많은 비트가 필요합니다. CRF는 인코더가 장면 단위, 프레임 단위로 예산을 알아서 배분하게 해 줍니다.
그 결과 용량은 예측하기 어려워지고 화질은 일정해집니다. 같은 CRF로 인코딩한 10분짜리 영상 두 개의 용량이 다섯 배까지 차이 날 수 있지만, 둘 다 각자의 원본 대비 똑같이 좋아 보입니다. 어딘가에서 재생하려고 파일을 변환하거나, 녹화본을 줄이거나, 클립을 게시하는 일상적인 인코딩에서는 일정한 화질이 거의 언제나 실제로 원하는 것입니다. x264 인코더와 Mediamorphy 변환기가 CRF를 기본 모드로 쓰는 이유이기도 합니다.
눈금 읽는 법
H.264(x264)에서 CRF는 0부터 51까지이고, 처음에는 방향 때문에 헷갈리기 쉽습니다. 숫자가 낮을수록 화질이 좋고 파일이 큽니다. 실제로 쓰이는 구간은 그중 좁은 범위입니다.
| CRF | 결과 | 쓰는 상황 |
|---|---|---|
| 0 | 수학적으로 완전 무손실, 엄청나게 큰 파일 | 거의 쓸 일 없음 — "가장 좋은 화질"이라는 뜻이 아님 |
| 17~18 | 시각적 무손실. 평소 시청에서는 차이를 알 수 없음 | 마스터본 보관, 나중에 다시 편집할 원본 |
| 22~23 | 훌륭한 화질에 합리적인 용량 — 최적 지점 | 공유·업로드·일반적인 용도의 기본값 |
| 26~28 | 괜찮은 화질에 확실히 작아진 파일 | 메신저, 이메일, 저장 공간이 빠듯할 때 |
| 30 이상 | 복잡한 장면에서 뭉개짐과 블록 현상이 눈에 띔 | 화질보다 용량이 훨씬 중요할 때만 |
놀랄 만큼 잘 들어맞는 경험칙이 하나 있습니다. CRF 6포인트마다 파일 용량이 대략 절반이 되거나 두 배가 됩니다. 23에서 29로 올리면 절반이 되고, 23에서 17로 내리면 두 배가 됩니다. 덕분에 CRF는 감을 잡기 쉽습니다. 지금 결과물이 "너무 크다"인지 "덜 선명하다"인지만 정하고 숫자를 몇 포인트 움직이면, 무슨 일이 일어날지 대략 알 수 있습니다.
CRF와 비트레이트, 각각이 이기는 상황
CRF의 대안은 비트레이트 지정입니다. 특정 데이터 전송률을 요구하면 인코더는 영상이 그만큼 필요하든 아니든 그 수치를 맞춥니다. 이 방식은 용량이나 전송률 자체가 제약일 때 옳은 도구입니다. 업로드 대역폭 안에서 하는 실시간 방송이나, 첨부 용량 제한 같은 딱 떨어지는 한도에 파일을 맞춰야 할 때가 그렇습니다. 반면 화질을 위한 도구로는 부적절합니다. 고정된 전송률은 쉬운 장면에 비트를 낭비하고 어려운 장면은 굶기기 때문입니다.
게다가 스트리밍 플랫폼은 업로드된 영상을 어차피 다시 인코딩하므로, 특정 비트레이트로 미리 압축해서 올리는 것은 대체로 도움이 되지 않습니다. 저장해 둘 만한 범위에서 가장 좋은 화질로 올리고 압축은 플랫폼에 맡기세요. 비트레이트가 실제로 무엇을 재는 값인지, 해상도·프레임 레이트와 어떻게 얽히는지는 비트레이트·해상도·프레임 레이트 가이드에서 자세히 다룹니다.
CRF가 할 수 없는 일
CRF는 인코더가 주어진 영상을 얼마나 충실하게 보존할지를 조절할 뿐, 이미 사라진 것을 되살리지는 못합니다. 흐릿하고 과하게 압축된 원본을 CRF 17로 다시 인코딩하면 똑같이 흐릿한 영상의 용량 큰 파일이 나올 뿐입니다. 인코딩 사슬에서 화질은 아래로만 흐르므로, 이미 다른 인코더를 거친 사본이 아니라 원본 파일을 변환할 때 가장 좋은 결과가 나옵니다.
반복 재인코딩은 이 문제를 누적시킵니다. 손실 압축을 거칠 때마다 정보가 조금씩 더 버려지고 오차가 쌓입니다. 복사본을 복사하는 것과 같은 셈이죠. 이전 변환의 결과물을 또 변환하지 말고, 원본에서 최종 포맷과 설정으로 한 번에 변환하세요. 세대 손실이라 부르는 이 현상은 오디오에도 똑같이 적용되며, 오디오 포맷 가이드에서 다룹니다.
고민하지 않고 값 고르기
간단한 판단 절차만으로 거의 모든 경우가 해결됩니다.
- 잘 모르겠다면? 23을 쓰세요. 기본값인 데는 이유가 있습니다. 대부분의 영상에서 대부분의 사람은 원본과 구분하지 못합니다.
- 오래 보관하거나 나중에 편집할 파일이라면? 18을 쓰고 용량은 감수하세요.
- 파일이 너무 크게 나왔다면? 3~5포인트 올려서 원본에서 다시 변환하세요. 해상도도 한 단계 낮추는 것을 고려해 보세요. 큰 폭으로 줄이려면 해상도와 CRF를 함께 쓰는 편이 가장 효과적이며, 용량 줄이기 가이드에서 설명합니다.
- 결과물이 흐릿하거나 뭉개져 보인다면? 3~5포인트 내리고, 이번에도 원본에서 다시 시작하세요.
테스트 요령: 설정을 확인하겠다고 1시간짜리 영상을 통째로 변환하지 말고, 조용한 장면과 복잡한 장면이 함께 든 30초 구간을 잘라 변환해 보고 결과를 확인하세요. Mediamorphy의 구간 자르기 기능이 있는 이유 중 하나가 바로 이것입니다. 긴 인코딩에 들어가기 전에 짧은 발췌본으로 화질을 잡아 보는 것이죠.
숫자 하나가 대부분을 결정합니다
코덱은 위압적이고, 영상 공학이 실제로 깊은 분야인 것도 맞습니다. 하지만 매일 손대는 조절 장치는 몇 개 되지 않습니다. 어디서 재생될지는 컨테이너와 코덱이 결정하고, 용량이 얼마나 되고 얼마나 좋아 보일지는 압도적으로 해상도와 CRF가 결정합니다. 파일이 무거우면 숫자를 올리고 흐릿하면 내리는 감각만 익혀도, 실무에서 필요한 동영상 인코딩 지식의 대부분을 갖춘 셈입니다.