Przejdź do treści

Klipy i VOD-y na Kicku: co link mówi downloaderowi

Kick odpowiada na trzy różne pytania w zależności od tego, jaki link wkleisz: klip, zakończona transmisja albo kanał, który akurat jest teraz na żywo. Downloader najpierw czyta adres URL i wybiera właściwe.

Sama struktura adresów Kicka to najczystsza mapa tego, co trzymasz w ręku. Klip to krótki, zmontowany moment. VOD to cała zakończona transmisja. Strona kanału nie jest ani jednym, ani drugim, a jeśli streamer jest w tej chwili na żywo, nie ma czego pobierać — transmisja na żywo nie ma końca, więc nie ma pliku.

Trzy linki i to, w co się zmieniają

Kształt linkuCo robi resolver
kick.com/<channel>/clips/clip_…Czyta API klipów i zwraca oryginalną jakość klipu.
kick.com/<channel>/videos/<id> oraz /video/<id>Czyta API wideo i wyświetla każdą wersję, jaką niesie główna playlista VOD-a.
kick.com/<channel>Wyświetla ostatnie VOD-y kanału; kanał na żywo zwraca zamiast tego live.
Sam identyfikator klipuNajpierw pyta o kanał (need_channel), bo API klipów Kicka potrzebuje obu.

Identyfikator klipu ma stały kształt — clip_, po którym następuje kod w stylu ULID — więc resolver rozpoznaje go bez żadnego wywołania sieciowego. Sam identyfikator nie wystarczy; API Kicka chce kanału w ścieżce, dlatego wklejony sam id wraca z prośbą o więcej.

Skąd biorą się jakości

Dla VOD-a Kick publikuje główną playlistę HLS: jeden mały plik wymieniający każdą wersję, każdą z własną rozdzielczością, przepustowością i liczbą klatek. Resolver czyta tę playlistę i nic więcej — nie pobiera fragmentów ani nie prosi Kicka o scalony plik, bo Kick takiego nie oferuje.

Klipy są prostsze: zwykle niosą jeden plik w jakości, w jakiej klip został wycięty, dlatego pobieranie klipu rzadko prosi Cię o wybór.

Dlaczego transmisje na żywo są odrzucane

Transmisja na żywo to przesuwające się okno, nie plik. Kick zgłasza kanał na żywo jako live w trzech różnych miejscach — w obiekcie VOD, na liście wideo kanału i na samej stronie kanału — a resolver zamienia wszystkie trzy na tę samą odpowiedź: live. Spróbuj klipu albo VOD-a.

Dwa inne stany wyglądają jak błędy, ale nimi nie są: processing znaczy, że transmisja skończyła się kilka minut temu i Kick nie zdążył jeszcze wyciąć VOD-a, a no_source znaczy, że VOD został usunięty lub wygasł. Oba to stan Kicka, nie awaria pobierania.

Nic nie jest przechowywane

CDN-y Kicka wysyłają access-control-allow-origin: *, więc przeglądarka może odczytać plik bezpośrednio. Pobieranie odbywa się na stronie, prosto z krawędzi sieci Kicka na Twój dysk; resolver zajmował się wyłącznie metadanymi. Nic nie jest ponownie kodowane, opatrywane znakiem wodnym ani zachowywane.

Jedna praktyczna uwaga: długie VOD-y najlepiej zapisywać w przeglądarce na komputerze, gdzie plik jest strumieniowany prosto na dysk. Na telefonie wielogodzinna transmisja jest trzymana w pamięci przez cały czas pobierania, a przeglądarka może się poddać, zanim plik się skończy.

W skrócie

Pytania

Czy mogę pobrać transmisję na żywo z Kicka, gdy trwa?

Nie. Transmisja na żywo nie ma końca ani pliku; Kick zgłasza ją jako live, a resolver ją odrzuca. Gdy transmisja się skończy i Kick przetworzy nagranie, link do VOD-a zadziała.

Dlaczego VOD-y pokazują kilka jakości, a klipy tylko jedną?

VOD niesie główną playlistę HLS ze wszystkimi wersjami, które zakodował Kick, więc resolver może wymienić każdą. Klip jest wycięty z jednego pliku, więc zwykle jest tylko ta jedna jakość do zaoferowania.

Co oznacza jakość `source`?

To sama główna playlista, oferowana, gdy nie udało się przetworzyć poszczególnych wersji. To to samo wideo, tylko bez podziału na rozdzielczości.

Narzędzia w tym artykule

Wszystkie artykuły