Уявіть ситуацію: ви відкриваєте YouTube, натискаєте на відео в 4K, і воно починає грати миттєво. Ви перемотуєте на середину — і воно знову грає майже без затримок. Для нас це буденність. Але з точки зору інженерії — це справжнє диво.
Як сервер, що знаходиться за тисячі кілометрів, примудряється передавати гігабайти даних на ваш телефон через нестабільний 4G так, щоб ви не бачили "колеса завантаження"?
У цьому розділі ми розберемо фундаментальну різницю між завантаженням (downloading) та потоковою передачею (streaming). Ми прослідкуємо шлях одного кліку і зрозуміємо, чому "буферизація" — це не помилка, а необхідність.
Уявіть, що ви хочете прийняти душ.
Download
Progressive Download
Adaptive Streaming
VOD (Video on Demand)
Live Streaming
Real-Time
Давайте подивимось на Timeline того, що відбувається за лаштунками:
Користувач відкриває сторінку. Браузер завантажує Маніфест (Manifest file). Це "меню" або "карта" відео. Там написано, які є варіанти якості (360p, 720p, 1080p) і де лежать шматочки відео.
Плеєр обирає початкову якість (зазвичай середню) і починає качати перші кілька секунд відео (Chunks). Ці дані складаються в Буфер — спеціальну область пам'яті.
Аналогія: Бак з водою (Стабільність) Уявіть, що вода з міської мережі (Інтернет) тече з перебоями — то сильний напір, то ледве капає. Якщо підключити душ напряму — митися буде неможливо, вода то ошпарить, то зникне. Тому ми ставимо проміжний бак (Буфер). Вода наповнює бак нерівномірно, але з баку в душ (Плеєр) вона тече ідеальним стабільним потоком. Поки в баку є вода — вам байдуже, що там ремонтують труби на вулиці. Проблеми починаються лише тоді, коли бак порожніє повністю — це і є той самий "кружечок завантаження".
Аналогія: Винос сміття (Ефективність) Чому ви не біжите на вулицю до смітника з кожною окремою обгорткою від цукерки? Це неефективно. Ви витратите весь день на біганину. Замість цього ви маєте домашнє відро (буфер). Ви:
Чому це важливо? Інтернет нестабільний. Буфер — це ваша "подушка безпеки". Якщо інтернет на секунду зникне, плеєр показуватиме відео з буфера, і користувач нічого не помітить.
Як тільки в буфері є достатньо даних (наприклад, 4 секунди), плеєр починає відтворення. Це той момент, коли зникає "спіннер".
Поки користувач дивиться, плеєр у фоні продовжує качати нові шматочки, намагаючись тримати буфер повним, але не переповненим.
Погляньмо на спрощену діаграму взаємодії про яку ми будемо говорити детально протягом всього майстер-класу:
Спробуйте самі побачити це "диво".
Відкрийте будь-яке відео на YouTube у браузері Chrome.
Натисніть F12 або Cmd+Option+I (на Mac), щоб відкрити інструменти розробника. Перейдіть у вкладку Network.
У полі фільтра напишіть videoplayback.
Ви не побачите одного файлу, що завантажується. Ви побачите серію запитів, які з'являються кожні кілька секунд. Це і є "чанки" (chunks), про які ми говорили.
Далі ми пірнемо глибше і розберемо, з чого саме складаються ці "шматки" — у розділі про Кодеки та Контейнери.