B2C · Xtream · Reseller





Archivní úložné vrstvy
Trojvrstvý archivní systém pro 500+ současných klientů. Nakonfigurujte v Konfigurace > Úložiště > Vrstvy úložiště. Každá vrstva má nezávislý životní cyklus, výpočet kapacity a chování při selhání.
Kodér
Write Buffer — dočasné úložisko pred flush.
2h horké okno (NVMe nebo tmpfs)
→ mirror (nepřetržitě)
Archive Flow — zapisuje do disk storage tier.
50 TB, retence 14 dní
→ prefetch na vyžádání
Mezipaměť přehrávání
1 TB warm cache, 500+ klientů
Klienti
Segmenty starší než mirror_min_age_minutes se KOPÍRUJÍ do RAID nepřetržitě. write_buffer drží 2h horké okno, takže přetočení na nedávné zůstane na rychlém úložišti. Teprve po evict_age_minutes (a pouze když ověřeno-zrcadleno) se segmenty smažou z write_buffer. RAID vždy má dlouhodobou kopii — žádné hodinové burst transfery.
Vrstva
Účel
Nastavení
Write buffer
Přijímá segmenty 24/7, udržuje 2hodinové okno pro rychlé přehrávání nedávného přetočení zpět, chrání RAID před náhodným IO. Zařízení může být fyzický oddíl NVMe (produkce) nebo tmpfs (vývoj/testovací box bez fyzického NVMe — viz sekce tmpfs níže).
device_path (blokové zařízení nebo 'tmpfs'), tmpfs_size_pct (10-50% MemAvailable když tmpfs), mirror_min_age_minutes, evict_age_minutes, flush_threshold_percent (vynucuje flush trigger)
HDD RAID Archiv
Dlouhodobé úložiště pro plnou archivaci (výchozí 14 dní). Přijímá kontinuální trickle zrcadlení z write_buffer — sekvenční zápis bez hodinových výbuchů. Přežije restart. RAID přežije selhání jednoho disku.
Archive Tier Nastavenia
Playback cache (volitelně)
Mezipaměť pro čtení populárních souborů starších než 2 hodiny (např. náhled EPG). Naplňuje se z archivu na vyžádání po překročení prahu popularity (3 zásahy / 5 minut). Zařízení může být NVMe nebo tmpfs.
Cache Tier Nastavenia
live writes × 2h = velikost okna write_buffer hot. Příklad: 50 streamů × 8 Mbps × 2h ≈ 36 GB. Přidejte ~30% rezervy pro zpoždění mirror trickle → ~50 GB write_buffer stačí pro 50 streamů. RAID velikost pro plnou retenci: 50 × 8 Mbps × 14 dní ≈ 6 TB.
Stream.dvr_file_path/2 testuje write_buffer → playback_cache → archiv v pořadí. Segment v 2h horké okně je podáván z write_buffer nativní rychlostí, přestože existuje také na RAID. Nginx X-Accel-Redirect podává soubory přímo bez procházení Phoenixem.
Každá vrstva může místo fyzického blokového zařízení používat RAM-backed tmpfs virtuální disk. Užitečné pro dev boxy bez náhradního NVMe, nebo pro efemérní testovací prostředí. Rozbalovací seznam zařízení Storage Tier obsahuje možnost 'tmpfs (virtuální disk z RAM)', která nahradí výběr cesty zařízení posuvníkem procenta.
Alokace se zadává jako procento MemAvailable (z /proc/meminfo) — krok 10, platné hodnoty 10/20/30/40/50. Tvrdá dolní hranice 10% (validace zamítne nižší). Tvrdá horní hranice 50%. Výchozí 30%. Na hostiteli s 100 GB MemAvailable: 10% = 10 GB, 30% = 30 GB, 50% = 50 GB. Velikost se přepočítává a remountuje živě, když je posuvník přesunut a uložen.
Pokud by vypočítaný cíl překročil 60% aktuálního MemAvailable, mount je odmítnut a vrstva zůstane offline (Stream.archive_path padá na další zdravou vrstvu). Zabraňuje agresivnímu nastavení v zabití BEAM přes OOM. Guard běží jak při startu, tak při každém Save v UI.
tmpfs existuje v RAM — veškerý obsah bufferu, který je právě zpracováván, bude při restartu hostitele ztracen. Záznam fstab zapsaný při zprovoznění automaticky znovu připojí prázdnou tmpfs při dalším startu, ale staré segmenty se nevrátí. Zrcadlení do archivu pokračuje normálně pro vše, co bylo před restartem již zrcadleno — ztracena je pouze poslední nezrcadlená část (obvykle < mirror_min_age_minutes). Pro produkci použijte fyzické NVMe zařízení; tmpfs je určeno jako náhrada pro vývoj/testování.
Použijte tmpfs pro write_buffer, když: (a) vývojový/testovací box nemá volný NVMe, ale stále chcete plný DVR pipeline pro integrační testování, (b) operátor chce ověřit chování zrcadlení + archivu bez předchozího nákupu NVMe, (c) ephemeral testování, kde je ztráta při restartu přijatelná. Nepoužívejte tmpfs v produkci — RAM je volatilní a řádově dražší než NVMe na GB retention.
Pokud je write tier tmpfs, StorageTierFlush používá těsnější výchozí hodnoty — mirror_min_age 2 min, evict_age 15 min (vs 5 min / 120 min pro fyzický NVMe). RAM je dražší než disk, takže horké okno zůstane menší. Override přes MIRROR_MIN_AGE_MINUTES / EVICT_AGE_MINUTES env vars pokud je potřeba.
Stupně jsou nakonfigurovány jednou přes Konfigurace > Úložiště > Stupně úložiště a automaticky zprovozněny — na hostiteli není třeba ručně upravovat mkfs/mount/fstab. StorageTier.ensure_all_provisioned/0 se spouští při každém startu z SystemInitializer a je idempotentní: již připojené stupně jsou přeskočeny, chybějící zařízení jsou ignorována, stupně tmpfs se po restartu čistě znovu připojí.
Při prvním spuštění (bez write tieru v DB) systém automaticky vytvoří write tier založený na tmpfs s alokací 30 % MemAvailable, připojený na /mnt/nvme_write. To poskytuje funkční DVR pipeline ihned po instalaci na jakémkoli hostiteli s dostatečnou RAM. Operátor může později přepnout zařízení na fyzický NVMe přes UI bez ztráty nastavení ostatních vrstev.
Stream.archive_path/1 vrací první 'zdravý' stupeň — write_buffer, pokud je připojen, zapisovatelný a volné místo přesahuje bezpečnostní minimum, jinak přechází do režimu archive (degradovaný režim). Bezpečnostní minimum je 20 % pro tmpfs (přísně RAM) a 2 % pro bloková zařízení. Koncový bod tier_health poskytuje informace o připojení/zapisovatelnosti/volném prostoru pro každý stupeň pro monitorování.
Změna tmpfs_size_pct v UI spustí umount + remount s novou velikostí na Save. Aktivní DVR zápisy jsou krátce pozastaveny (přechod mount < 1 s). Doporučení: měňte velikost tmpfs pouze, když je DVR write rate nízká, a zvažte restart streamů později, aby si vyzvedli nový mount správně.
Základní URL — OSTV Player
Pole balíčku
API balíčků
Politika hesel
API prodejců
Nastavení
Pole uživatele
Správa uživatelů
Přehled správy IPTV obsahu
Přidávání a správa živých streamů
Živé kanály — přidávání a úpravy
Importování obsahu
Hromadný import
Import M3U playlistu
VOD — správa videí na vyžádání
Přidávání filmů
Seriály — správa seriálů a epizod
Přidávání seriálů
Přidávání epizod
Rádio — správa rozhlasových stanic
Přidávání stanic
Organizace obsahu do kategorií
Správa kategorií
Přiřazování obsahu do kategorií
Správa bouquetů
Vytváření bouquetů
Přiřazování streamů do bouquetů
Správa uživatelů a předplatitelů
Přidávání uživatelů
Přiřazování balíčků uživatelům
Správa balíčků
Vytváření balíčků
Přiřazování bouquetů do balíčků
Synchronizace s Flussonickem
Automatická synchronizace
Manuální synchronizace
Správa miniatur a ikon
Nahrávání ikon
Automatické stahování miniatur
Přehled
API B2C (Business-to-Consumer) poskytuje autentizaci a přístup ke streamům pro koncové přehrávače. Uživatelé se autentizují pomocí uživatelského jména a hesla a obdrží časově omezený autentizační token pro další požadavky.
Ověřte uživatele a získejte auth_token pro další volání API.
Metoda
Koncový bod
Tělo požadavku
Parametr
Typ
Povinné
Popis
Ano
Přihlašovací jméno uživatele
Heslo uživatele
Příklad požadavku
Pole odpovědi
Úspěšná odpověď (200)
Šifrovaný ověřovací token pro následující volání API
Datum/čas vypršení tokenu v ISO 8601 formátu
Příklad úspěšné odpovědi
Chybová odpověď (403)
Popis chybové zprávy
HTTP stavový kód
Příklad chybové odpovědi
Získat informace o ověřeném uživateli pomocí auth tokenu.
Pole odpovědi
Uživatelské jméno ověřeného uživatele
Zpráva serveru (prázdné pokud žádná)
Stav ověření (1 = ověřen)
Stav účtu: Aktivní, Zablokovaný, Zakázaný, Zkušební
Datum vypršení platnosti účtu (null, pokud je neomezené)
Počet aktuálních aktivních připojení
Datum vytvoření účtu ve formátu ISO 8601
Maximální povolený počet současných připojení
Seznam povolených formátů výstupního streamu
Název poskytovatele majitele/prodejce uživatele (null pokud žádný)
URL image loga poskytovatele (null pokud žádný)
URL obrázku loga poskytovatele pro zobrazení v kolapsu 208x208 (null, pokud není)
Aktuální čas serveru ve formátu ISO 8601
Příklad požadavku
Načtěte kategorie filtrované podle typu. Dostupné typy: live (streamy), vod (filmy), series (seriály).
Typ kategorie: live, vod nebo series
ID kategorie jako řetězec
Název kategorie k zobrazení
ID nadřazené kategorie (0 pokud kořen)
MD5 hash obsahu pro neplatnost mezipaměti
Příklad požadavku
Načíst podrobné informace o konkrétní položce VOD, včetně metadat a odkazů na stream.
ID streamu VOD (UUID)
URL obalu filmu
Identifikátor TMDB
URL obrázku pozadí
Žánr
Děj / popis
Členové obsazení
Hodnocení (0-10)
Jméno režiséra
Datum vydání
Trvání v sekundách
Délka jako formátovaný řetězec
Pole ID kategorií
1 pokud obsah pro dospělé, 0 jinak
ID streamu VOD
Název VOD
Datum přidání (ISO 8601)
URL odkazů streamu
Metadata kodeku videa/audia
Získat informace o sérii s úplným seznamem sezón a dílů seskupeným podle čísla sezóny.
ID série (UUID)
Číslo sezóny
Název sezóny k zobrazení
Počet dílů v sezóně
Datum premiéry sezóny
Přehled sezóny / popis
URL adresa obrázku obalu sezóny
Mapa klíčovaná podle řetězce čísla sezóny. Každá hodnota je pole objektů dílů.
Pole objektu dílu
ID dílu
ID dílu TMDB
Číslo dílu v rámci sezóny
Datum přidání (ISO 8601)
Číslo sezóny
Objekt informací o epizodě (stejná struktura jako VOD info)
URL odkazů streamu
Metadata kodeků videa/audia
Platnost tokenu závisí na roli uživatele: admin = 365 dní, ostatní = 30 dní|Zakázané účty se nemohou přihlásit (vrací 403)|Každé úspěšné přihlášení aktualizuje časové razítko last_login uživatele|Tokeny jsou šifrované a obsahují user_id, username, roli a datum vypršení platnosti
Úspěšná odpověď (200)
Auth token získaný z koncového bodu /auth