Клипы и VOD Kick: что ссылка сообщает загрузчику
Kick отвечает на три разных вопроса в зависимости от вставленной ссылки: клип, прошедшая трансляция или канал, который сейчас в эфире. Загрузчик сначала читает URL и выбирает нужный вариант.
Адресная структура Kick — самая понятная карта того, что у вас в руках. Клип — короткий смонтированный момент. VOD — полная прошедшая трансляция. Страница канала — ни то ни другое, и если стример сейчас в эфире, скачивать нечего: у прямого эфира нет конца, значит нет и файла.
Три ссылки и то, чем становится каждая
| Форма ссылки | Что делает резолвер |
|---|---|
kick.com/<channel>/clips/clip_… | Читает API клипов и возвращает исходное качество клипа. |
kick.com/<channel>/videos/<id> и /video/<id> | Читает API видео и перечисляет все версии из мастер-плейлиста VOD. |
kick.com/<channel> | Перечисляет недавние VOD канала; канал в эфире вместо этого отвечает live. |
| Голый id клипа | Сначала запрашивает канал (need_channel), потому что API клипов Kick требует и то и другое. |
У id клипа фиксированная форма — clip_, за которым идёт код в стиле ULID — так что резолвер узнаёт его без обращения к сети. Голого id самого по себе недостаточно: API Kick хочет канал в пути, поэтому вставленный id в одиночку возвращается с просьбой добавить больше.
Откуда берутся качества
Для VOD Kick публикует мастер-плейлист HLS: маленький файл, перечисляющий каждую версию с её разрешением, битрейтом и частотой кадров. Резолвер читает только этот мастер — он не скачивает фрагменты и не просит у Kick объединённый файл, потому что Kick такого не предлагает.
- Каждая версия сохраняет лучший доступный битрейт для своего разрешения, поэтому список никогда не показывает две записи одного размера.
- Варианты отсортированы по битрейту, от большего к меньшему: верхняя строка — исходник.
- Версия с 50 fps и выше подписана частотой кадров, например
1080p60; ниже этого подпись — просто высота. - Если мастер не удаётся разобрать, резолвер откатывается к одной записи
source, указывающей на сам плейлист.
Клипы проще: обычно они несут один файл в том качестве, в котором клип был нарезан, поэтому скачивание клипа редко просит что-то выбирать.
Почему прямые эфиры отклоняются
Прямой эфир — это скользящее окно, а не файл. Kick сообщает о канале в эфире в трёх разных местах — в объекте VOD, в списке видео канала и на самой странице канала — и резолвер превращает все три в один ответ: live. Попробуйте клип или VOD.
Ещё два состояния выглядят как ошибки, но ими не являются: processing значит, что трансляция закончилась несколько минут назад и Kick не закончил нарезку VOD, а no_source значит, что VOD удалён или истёк. Оба — состояние Kick, а не сбой скачивания.
Ничего не сохраняется
CDN Kick отправляют access-control-allow-origin: *, поэтому браузер может читать файл напрямую. Скачивание идёт в странице, прямо с границы Kick на ваш диск; резолвер обрабатывал только метаданные. Ничего не перекодируется, не помечается водяным знаком и не сохраняется.
Одно практическое замечание: длинные VOD лучше сохранять в настольном браузере, где файл пишется сразу на диск. На телефоне многочасовая трансляция держится в памяти, пока скачивается, и браузер может сдаться до завершения файла.
Коротко
- Ссылки на клипы возвращают клип; ссылки на VOD — список версий; ссылки на канал перечисляют недавние VOD.
- Прямые эфиры отклоняются — пока эфир идёт, файла для сохранения нет.
- Строки качества берутся из собственного мастер-плейлиста HLS Kick, лучший битрейт на разрешение.
- Байты идут с CDN Kick в ваш браузер; резолвер ничего не сохраняет.
Вопросы
Можно ли скачать прямой эфир Kick, пока он идёт?
Нет. У прямого эфира нет конца и нет файла; Kick сообщает о нём как о live, и резолвер отклоняет его. Как только трансляция закончится и Kick завершит обработку, ссылка на VOD заработает.
Почему VOD перечисляют несколько качеств, а клипы — только одно?
VOD поставляется с мастер-плейлистом HLS со всеми версиями, которые закодировал Kick, поэтому резолвер может перечислить каждую. Клип нарезан из одного файла, так что предложить обычно можно только это одно качество.
Что означает качество `source`?
Это сам мастер-плейлист, предлагаемый, когда отдельные версии не удалось разобрать. То же видео, только без разбивки по разрешениям.