앞 절에서 조각으로 잘라 필요한 만큼만 받게 하기로 했습니다. 그 조각을 얼마로 자르고 어떻게 찾게 하는지가 이 절입니다.
조각과 목록 파일
영상을 몇 초 단위로 자릅니다. 그리고 어떤 조각이 어디 있는지 적은 목록 파일을 함께 둡니다. 재생하는 쪽은 목록을 먼저 받고 필요한 조각을 순서대로 받습니다.
목록에는 이런 것이 들어갑니다.
| 항목 | 왜 필요한가 |
|---|---|
| 화질 종류와 각 화질의 목록 위치 | 어떤 선택지가 있는지 안다 |
| 조각 주소 | 어디서 받을지 안다 |
| 조각 하나의 길이 | 어디로 건너뛸지 계산한다 |
| 전체 길이 | 진행 바를 그린다 |
목록 파일이 있어야 탐색이 가능합니다. 사용자가 5분 지점으로 건너뛰면, 조각 길이로 나눠 몇 번째 조각인지 계산해 그것만 받습니다. 통째 파일에서는 이 계산을 할 수 없습니다.
조각 길이를 얼마로 하나
짧게 자를수록 유리한 것과 불리한 것이 갈립니다.
| 조각 길이 | 유리한 점 | 불리한 점 |
|---|---|---|
| 짧다 (2초 내외) | 시작이 빠르다. 화질 전환이 잦게 가능하다 | 요청 수가 많다. 목록이 길어진다 |
| 길다 (10초 내외) | 요청이 적다. 압축 효율이 좋다 | 시작이 늦다. 전환이 굼뜨다 |
요청 수를 계산해 봐야 합니다. 8분을 2초로 자르면 조각이 240개이고, 시청 하루 3억 회 (평균 8분 시청)에 곱하면 하루 수백억 건의 조각 요청입니다. 조각을 짧게 하는 결정은 요청 수를 그만큼 늘리는 결정입니다.
그래서 흔히 중간을 고릅니다. 시작 부분만 짧은 조각으로 두고 뒤는 길게 두는 방법도 있습니다. 시작이 급한 것은 앞부분뿐입니다.
조각은 스스로 재생 가능해야 한다
영상 압축은 앞 화면과의 차이만 기록하는 방식을 씁니다. 그래서 아무 지점에서 잘라 버리면 그 조각만으로는 화면을 만들 수 없습니다.
조각의 첫 화면은 앞을 참조하지 않는 완전한 화면이어야 한다
이 제약이 두 가지를 강제합니다. 첫째, 조각 경계를 아무 데나 둘 수 없습니다. 둘째, 완전한 화면을 자주 넣어야 하므로 조각을 짧게 하면 파일 크기가 커집니다. 조각 길이 결정에 압축 효율이 걸리는 이유입니다.
목록을 어떻게 내려주나
목록 파일은 작고 모든 시청자에게 같습니다. 조각도 같습니다. 둘 다 사람마다 다르게 만들지 않는 것이 중요합니다.
주소가 사람마다 다르면 엣지가 같은 조각을 사람 수만큼 따로 저장합니다. 적중률이 무너지고, 그것이 곧 비용입니다. 접근 제어는 주소가 아닌 다른 방법으로 하며 뒤에서 다룹니다.