Перейти к содержимому

Клипы и 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 такого не предлагает.

Клипы проще: обычно они несут один файл в том качестве, в котором клип был нарезан, поэтому скачивание клипа редко просит что-то выбирать.

Почему прямые эфиры отклоняются

Прямой эфир — это скользящее окно, а не файл. Kick сообщает о канале в эфире в трёх разных местах — в объекте VOD, в списке видео канала и на самой странице канала — и резолвер превращает все три в один ответ: live. Попробуйте клип или VOD.

Ещё два состояния выглядят как ошибки, но ими не являются: processing значит, что трансляция закончилась несколько минут назад и Kick не закончил нарезку VOD, а no_source значит, что VOD удалён или истёк. Оба — состояние Kick, а не сбой скачивания.

Ничего не сохраняется

CDN Kick отправляют access-control-allow-origin: *, поэтому браузер может читать файл напрямую. Скачивание идёт в странице, прямо с границы Kick на ваш диск; резолвер обрабатывал только метаданные. Ничего не перекодируется, не помечается водяным знаком и не сохраняется.

Одно практическое замечание: длинные VOD лучше сохранять в настольном браузере, где файл пишется сразу на диск. На телефоне многочасовая трансляция держится в памяти, пока скачивается, и браузер может сдаться до завершения файла.

Коротко

Вопросы

Можно ли скачать прямой эфир Kick, пока он идёт?

Нет. У прямого эфира нет конца и нет файла; Kick сообщает о нём как о live, и резолвер отклоняет его. Как только трансляция закончится и Kick завершит обработку, ссылка на VOD заработает.

Почему VOD перечисляют несколько качеств, а клипы — только одно?

VOD поставляется с мастер-плейлистом HLS со всеми версиями, которые закодировал Kick, поэтому резолвер может перечислить каждую. Клип нарезан из одного файла, так что предложить обычно можно только это одно качество.

Что означает качество `source`?

Это сам мастер-плейлист, предлагаемый, когда отдельные версии не удалось разобрать. То же видео, только без разбивки по разрешениям.

Инструменты в этой статье

Все статьи