화질 5단계를 만드는 일은 오래 걸립니다. 10분 영상을 다섯 화질로 만드는 것은 원본을 다섯 번 훑는 것과 같습니다. 그 순서를 정하는 것이 이 절입니다.
하나라도 되면 공개한다
모든 화질이 끝날 때까지 기다리면 올린 사람이 오래 기다립니다. 그런데 재생에 필요한 것은 화질 하나입니다.
그래서 낮은 화질을 먼저 만들고 그것이 끝나면 공개합니다. 높은 화질은 뒤이어 붙습니다. 목록 파일에 있는 화질만 시청자가 고를 수 있으므로, 목록을 갱신하는 것으로 화질이 추가됩니다.
낮은 화질을 먼저 하는 이유가 둘입니다.
| 이유 | 내용 |
|---|---|
| 빨리 끝난다 | 만들 데이터가 적다 |
| 가장 필요하다 | 느린 네트워크의 마지막 방어선이다 |
조각 단위로 나눠 만든다
인코딩을 영상 단위로 하면 한 영상이 한 대를 오래 붙잡습니다. 조각 단위로 나누면 여러 대가 한 영상을 함께 만듭니다.
조각 240개를 여러 대에 나눠 준다
다 만들어지면 순서대로 이어 붙인다
이것이 가능한 이유는 앞 절에서 조각이 스스로 재생 가능하게 만들어졌기 때문입니다. 앞 조각을 참조하지 않으므로 순서와 무관하게 만들 수 있습니다.
실패 단위도 함께 작아집니다. 한 조각이 실패하면 그 조각만 다시 만듭니다. 영상 단위였다면 10분을 처음부터 다시 해야 합니다.
무엇을 먼저 처리하나
인코딩 대기줄에 여러 영상이 있으면 순서를 정해야 합니다.
| 기준 | 판단 |
|---|---|
| 짧은 영상 먼저 | 짧은 것이 뒤에서 오래 기다리는 것을 막는다 |
| 먼저 올린 것 먼저 | 공평하지만 긴 영상이 줄을 막는다 |
| 인기 계정 먼저 | 조회가 많을 것이 빨리 공개된다 |
긴 영상 하나가 줄을 막는 것이 실제로 가장 흔한 문제입니다. 대기줄을 길이에 따라 나눠 두면, 짧은 영상은 긴 영상을 기다리지 않습니다. 알림 시스템에서 급한 줄을 따로 둔 것과 같은 구조입니다.
원본을 언제까지 두나
인코딩이 끝나면 원본이 필요할까요. 필요합니다.
새 화질을 추가할 때
인코딩 방식을 바꿔 다시 만들 때
잘못 만들어진 것을 다시 만들 때
원본은 가장 큰 파일인데 거의 읽히지 않습니다. 자주 읽지 않는 것을 위한 값싼 저장소로 옮기는 것이 이 성질에 맞습니다. 꺼내는 데 시간이 걸려도 됩니다.