×

📺 IPTV

B2C · Xtream · Reseller

IPTV lietotāju pārvaldība

Arhivēšanas glabāšanas līmeņi

Trīs līmeņu arhīva sistēma 500+ vienlaicīgiem klientiem. Konfigurējiet iestatījumos > Glabāšana > Glabāšanas līmeņi. Katram līmenim ir neatkarīgs dzīves cikls, ietilpības aprēķins un rezerves darbība.

Koderis

Rakstīšanas buferis

2h karstais logs (NVMe vai tmpfs)

→ spogulis (nepārtraukts)

HDD RAID 5

50 TB, 14 dienu glabāšana

→ priekšlejupielāde pēc pieprasījuma

Atskaņošanas kešatmiņa

1 TB siltā kešatmiņa, 500+ klienti

Klienti

Kopēt, nevis pārvietot

Segmenti, kas vecāki par mirror_min_age_minutes, tiek nepārtraukti KOPĒTI uz RAID. Write_buffer satur nepārtrauktu 2 stundu karsto logu, lai atskaņošana līdz nesenajam notiktu uz ātrās glabāšanas vietas. Segmenti tiek dzēsti no write_buffer tikai pēc evict_age_minutes (un tikai tad, ja tie ir pārbaudīti kā nokopēti). RAID vienmēr satur ilgtermiņa kopiju — nav stundas sprādziena pārraides.

Līmenis

Mērķis

Iestatījumi

Rakstīšanas buferis

Saņem segmentus 24/7, tur 2 stundu karsto logu ātrai nesenai atskaņošanai, aizsargā RAID no nejaušas IO. Ierīce var būt fizisks NVMe nodalījums (ražošana) vai tmpfs (izstrādes/testa dators bez fiziska NVMe — skat. tmpfs sadaļu zemāk).

device_path (bloka ierīce vai 'tmpfs'), tmpfs_size_pct (10-50% no MemAvailable, ja tmpfs), mirror_min_age_minutes, evict_age_minutes, flush_threshold_percent (piespiedu iztukšošanas slieksnis)

HDD RAID arhīvs

Ilgtermiņa glabāšana pilnai saglabāšanai (noklusējums 14 dienas). Saņem nepārtrauktu mirror plūsmu no write_buffer — secīga rakstīšana, bez stundas sprādzieniem. Pārdzīvo restartēšanu. RAID pārdzīvo viena diska kļūmi.

glāšanas_dienas, raid_ierīce, nginx_lokacija, min_free_percent

Atskaņošanas kešatmiņa (pēc izvēles)

Lasīšanas kešatmiņa populāriem failiem, kas vecāki par 2 stundām (piemēram, EPG atgriezeniskā atskaņošana). Aizpildīts no arhīva pēc pieprasījuma, kad tiek sasniegts popularitātes slieksnis (3 reizes / 5 min). Ierīce var būt NVMe vai tmpfs.

priekšlejupielādes_stundas, max_savienojumi, evictions_policy (sesija/lru/fifo)

Ietilpības aprēķins

live writes × 2h = write_buffer siltuma loga izmērs. Piemērs: 50 straumes × 8 Mbps × 2h ≈ 36 GB. Pievienojiet ~30% rezervi spoguļa backlog → ~50 GB write_buffer ir pietiekami 50 straumēm. RAID izmērīts pilnai glāšanai: 50 × 8 Mbps × 14 dienas ≈ 6 TB.

Lasīšana (līmeņu apzināta meklēšana)

Stream.dvr_file_path/2 pārbauda write_buffer → playback_cache → arhīvu secībā. Segments 2 stundu karstajā logā tiek servēts no write_buffer ar natīvo ātrumu, pat ja tas pastāv arī uz RAID. Nginx X-Accel-Redirect servē failus tieši, neizmantojot Phoenix.

tmpfs virtuālā diska (dev/test)

Katrs līmenis var izmantat RAM balstītu tmpfs virtuālo disku, nevis fizisku bloka ierīci. Noderīgi izstrādes datoriem bez brīva NVMe vai īslaicīgām testēšanas vidēm. Storage Tier kartē ierīces nolaižamajā izvēlnē ir opcija 'tmpfs (virtuālais disks no RAM)', kas aizstāj ierīces ceļa izvēlni ar procentu slīdni.

Izmērs % no brīvā RAM

Piešķiršana tiek norādīta kā MemAvailable (no /proc/meminfo) procents — solis 10, derīgas vērtības 10/20/30/40/50. Stingrs minimums 10% (validācija noraida zemāk). Stingrs maksimums 50%. Noklusējums 30%. Uz 100 GB MemAvailable resursdatora: 10% = 10 GB, 30% = 30 GB, 50% = 50 GB. Izmērs tiek pārrēķināts un pārmontēts dzīvē, kad slīdnis tiek pārvietots un saglabāts.

OOM drošības sardze

Ja aprēķinātais mērķis pārsniedz 60% no pašreizējā MemAvailable, montēšana tiek noraidīta un līmenis paliek nedarbīgs (Stream.archive_path pāriet uz nākamo veselīgo līmeni). Tas novērš agresīva iestatījuma izraisītu BEAM nāvi, izmantojot OOM. Aizsardzība darbojas gan palaišanas brīdī, gan katru reizi, kad tiek nospieds Saglabāt lietotājsaskarnē.

Pārstartēšanas noturība

tmpfs dzīvo RAM — visi plūstošie bufera saturs tiek ZAUDĒTI, kad resursdators tiek restartēts. Fstab ieraksts, kas tiek uzrakstīts sagatavošanas brīdī, automātiski pārmontē tukšo tmpfs nākamajā palaišanā, bet vecie segmenti neatgriežas. Mirror uz arhīvu turpinās normāli visam, kas jau bija nokopēts pirms restartēšanas — tiek zaudēts tikai pēdējais nenokopētais logs (parasti < mirror_min_age_minutes vērtība). Ražošanai izmantojiet fizisku NVMe ierīci; tmpfs ir paredzēts kā izstrādes/testa aizstājējs.

Kad izmantot tmpfs

Izmantojiet tmpfs write_buffer, ja: (a) izstrādes/testa datorā nav brīva NVMe, bet vēlaties pilnu DVR cauruļvadu integrācijas testēšanai, (b) operators vēlas validēt mirror + arhīva darbību, neiegādājoties NVMe iepriekš, (c) īslaicīga testēšana, kurā zaudēšana pēc restartēšanas ir pieņemama. NEIZMANTOJIET tmpfs ražošanā — RAM ir mainīga un ir kārtas dārgāks par NVMe uz GB saglabāšanas.

Ātrāka iztukšošana tmpfs

Kad write līmenis ir tmpfs, StorageTierFlush izmanto stingrākus noklusējumus — mirror_min_age 2 min, evict_age 15 min (pret 5 min / 120 min fiziskajam NVMe). RAM ir dārgāks par disku, tāpēc nepārtrauktais karstais logs tiek turēts mazāks. Pārrakstiet, izmantojot vides mainīgos MIRROR_MIN_AGE_MINUTES / EVICT_AGE_MINUTES, ja nepieciešams.

Līmeņu automātiska sagatavošana un drošība

Līmeņi tiek konfigurēti vienreiz caur iestatījumiem > Glabāšana > Glabāšanas līmeņi un tiek automātiski sagatavoti — nav nepieciešama manuāla mkfs/mount/fstab rediģēšana uz resursdatora. StorageTier.ensure_all_provisioned/0 tiek izpildīts katras palaišanas brīdī no SystemInitializer un ir idempotents: jau montēti līmeņi tiek izlaisti, trūkstošas ierīces tiek ignorētas, tmpfs līmeņi tiek pārmontēti tīri pēc restartēšanas.

Noklusējuma palaišanas iestatījums

Pirmās palaišanas brīdī (ja datubāzē nav write līmeņa), sistēma automātiski izveido write līmeni, kas balstīts uz tmpfs, ar 30% no MemAvailable piešķiršanu, montēšanas punktu /mnt/nvme_write. Tas nodrošina darbspējīgu DVR cauruļvadu no pirmā brīža jebkurā datorā ar pietiekamu RAM. Operators vēlāk var pāriet uz fizisku NVMe caur lietotājsaskarni, nezaudējot citu līmeņu iestatījumus.

Veselība un pāreja uz rezerves sistēmu

Stream.archive_path/2 atgriež pirmo 'veselīgo' līmeni — write_buffer, ja tas ir montēts, rakstāms un brīvais procents pārsniedz drošības slieksni, citādi tiek izmantots arhīvs (degradēts režīms). Drošības slieksnis ir 20% tmpfs (RAM stingri), 2% bloka ierīcēm. tier_health galapunkts nodrošina informāciju par katru līmeni (montēts/rakstāms/brīvais procents) monitorings.

Dzīva izmēra maiņa

tmpfs_size_pct maiņa lietotājsaskarnē izraisa umount + remount ar jauno izmēru, kad tiek nospiests Saglabāt. Aktīvā DVR rakstīšana īsi tiek apturēta (montēšanas pāreja < 1 s). Ieteikums: mainiet tmpfs izmēru tikai tad, kad DVR rakstīšanas ātrums ir zems, un pēc tam pārstartējiet straumes, lai pārliecinātos, ka tās izmanto jauno montēšanas punktu.

Bāzes URL — OSTV Player

Paketes lauki

Paketu API

Paroļu politika

Pārdotāju API

Iestatījumi

Lietotāja lauki

Lietotāju pārvaldība

IPTV lietotāju pārvaldība

IPTV pārvaldība ļauj importēt un pārvaldīt IPTV kanālu sarakstus.

Kanālu sarakstus var importēt M3U vai XML formātā.

Katrs kanāls var būt saistīts ar Stream vai Mux.

Kanālus var grupēt pēc kategorijām un žanriem.

IPTV kanālu sarakstus var automātiski atjaunināt no URL.

Atjaunināšanas biežumu var iestatīt no stundas līdz dienai.

Kanālu logo tiek lejupielādēti un kešoti lokāli.

EPG dati tiek saistīti ar kanāliem pēc ID vai nosaukuma.

Kanālus var manuāli kārtot un pārsaukt.

Var iestatīt kanālu slēgšanu vai redzamību.

Kanālu sarakstu var eksportēt M3U formātā.

Pārlūkprogrammā var skatīt kanālu sarakstu un statusu.

Kanālu filtrēšana pēc nosaukuma, grupas vai statusa.

Var iestatīt rezerves URL katram kanālam.

Kanālu pārraudzība ietver savienojamības un kvalitātes pārbaudi.

Pieejami IPTV statistikas pārskati par skatīšanos.

Var integrēt ar ārējiem EPG avotiem.

M3U faila parsēšana atbalsta paplašinātos atribūtus.

Kanālu skaits netiek ierobežots.

Var izmantot vairākus M3U avotus vienlaikus.

Kanālu kategorijas var pārkārtot pēc vajadzības.

Atbalstīti Unicode kanālu nosaukumi.

IPTV sarakstu versijas tiek glabātas vēsturē.

Var atjaunot iepriekšējo saraksta versiju.

Importēšanas konflikti tiek risināti ar sapludināšanas stratēģiju.

Var iestatīt kanālu prioritāti pārslogojuma gadījumā.

Pieejama REST API IPTV pārvaldībai.

Kanālu metadatus var rediģēt manuāli.

Atbalstīti droši (HTTPS/FTPS) M3U avoti.

Kanālu importēšanas žurnāls glabā kļūdu informāciju.

Var konfigurēt HTTP galvenes M3U avota pieprasījumiem.

B2C API

Pārskats

B2C API nodrošina pilnīgu satura pārvaldības, straumēšanas un autentifikācijas funkcionalitāti. Visām API izsaukumiem ir nepieciešams derīgs autentifikācijas tokens, kas iegūts no autentifikācijas gala punkta.

Autentifikācija

Autentificēt lietotāju un iegūt auth_token turpmākiem API izsaukumiem.

Metode

Gala punkts

Pieprasījuma ķermenis

Parametrs

Tips

Obligāts

Apraksts

Lietotāja pieteikšanās vārds

Lietotāja parole

Piemēra pieprasījums

Atbilžu lauki

Veiksmīga atbilde

Šifrēts autentifikācijas tokens turpmākiem API izsaukumiem

Tokēna derīguma termiņa datums/laiks ISO 8601 formātā

Piemera veiksmīgas atbildes

Kļūdas atbilde

Kļūdas apraksta ziņojums

HTTP statusa kods

Piemera kļūdas atbilde

Lietotāja informācija

Iegūtiet informāciju par autentificēto lietotāju, izmantojot autentifikācijas token.

Atbilžu lauki

Autentificētā lietotāja vārds

Servera ziņa (tukša ja nav)

Autentifikācijas statuss (1 = autentificēts)

Konta statuss: Aktīvs, Aizliegts, Atspējots, Proba

Konta beigu termiņš (null ja neierobežots)

Pašlaik aktīvo savienojumu skaits

Konta izveides datums ISO 8601 formātā

Atļautais maksimālais vienlaicīgo savienojumu skaits

Atļauto izlaides plūsmu formātu saraksts

Lietotāja īpašnieka/reselera nosaukums (null ja nav)

Nodrošinātāja logo attēla URL (null ja nav)

Nodrošinātāja sabrukušā logo attēla URL 208x208 (null ja nav)

Pašreizējais servera laiks ISO 8601 formātā

Piemēra pieprasījums

Kategorijas

Iegūt kategorijas, kas filtrētas pēc tipa. Pieejamie tipi: live (straumēšana), vod (filmas), series (seriāli).

Kategorijas tips: live, vod vai series

Kategorijas ID kā virkne

Kategorijas attēlošanas nosaukums

Vecāka kategorijas ID (0, ja sakne)

Satura MD5 hash kešatmiņas invalidizācijai

Piemēra pieprasījums

VOD detaļas

Iegūstiet detalizētu informāciju par konkrētu VOD elementu, ieskaitot metadatus un plūsmu saites.

VOD straumes ID (UUID)

Info objekta lauki

Vāka attēla URL

TMDB identifikators

Fona attēla URL

Žanra strings

Sižets / apraksts

Aktieri

Reitings (0-10)

Režisora vārds

Izlaiduma datums

Ilgums sekundēs

Ilgums kā formatēts strings

Kategoriju ID masīvs

1, ja pieaugušo saturs, citādi 0

VOD objekta lauki

VOD straumes ID

VOD tituls

Pievienošanas datums (ISO 8601)

Straumes saites URL

Video/audio kodeka metadati

Sērijas nosaukums

TV sērijas informācija

Sērijas ID

Sezonu masīva lauki

Sezonas numurs

Sezonas nosaukums

Epizožu skaits sezonā

Sezonas pārraides datums

Sezonas apraksts / apraksts

Sezonas vada attēla URL

Epizodes objekts

Karte ar sezonas numura virkni kā atslēgu. Katra vērtība ir epizožu objektu masīvs.

Epizodes objekta lauki

Epizodes ID

TMDB epizodes ID

Epizodes numurs

Epizodes nosaukums

Epizode pievienota sērijai

Sezonas numurs

Epizodes informācija

Epizodes saites

Epizodes metadati

Piezīmes

Tokēna derīguma termiņš ir atkarīgs no lietotāja lomas: admin = 365 dienas, pārējie = 30 dienas|Atspējoti konti nevar autentificēties (atgriež 403)|Katrs veiksmīgs ieraksts atjaunina lietotāja last_login laika zīmogu|Tokēni ir šifrēti un satur user_id, username, role un expiration

Veiksmīga atbilde (200)

Autentifikācijas tokens, kas iegūts no /auth gala punkta