Sari la conținut
Castreon
Livrare

Castreon în spatele unui CDN (push HLS)

Actualizat la 08 oct. 2026

Castreon poate urca singur HLS-ul unui canal la un CDN sau într-un spațiu de stocare. Privitorii citesc apoi de la CDN, nu de la serverul dumneavoastră: serverul doar scrie, oricâți privitori ar fi, și nu trebuie deschis nimic spre el din internet.

Disponibil din Castreon 1.1.0, în planurile Pro și Enterprise.

Când vă ajută

  • Aveți mulți privitori sau privitori în mai multe țări și nu vreți servere proprii de distribuție.
  • Serverul de transcodare stă într-o rețea închisă (birou, centru de date fără porturi deschise) — push-ul doar trimite date în afară.
  • Vreți ca o problemă de trafic să nu atingă transcodarea: CDN-ul preia toate cererile privitorilor.

Dacă aveți deja propriile servere de distribuție care citesc HLS-ul de la Castreon (pull), nu aveți nevoie de push — CDN-ul poate citi și el direct adresa HLS a canalului.

Ce destinații merg

Destinația Pentru ce
HTTP PUT / WebDAV spațiul de stocare al unui CDN (acces cu un antet, de ex. AccessKey) sau un server WebDAV (utilizator + parolă)
S3 (compatibil) orice stocare compatibilă S3; CDN-ul citește din bucket

Configurarea

  1. Deschideți canalul → Editează → la Output-uri, Adaugă output → tipul CDN push (HLS).
  2. Alegeți Destinația:
    • HTTP PUT / WebDAV — Adresa de scriere (adresa spațiului de stocare, cu zona), apoi Autentificare: Fără, Utilizator + parolă sau Antet (nume + valoare) — numele și valoarea le găsiți la furnizor (de ex. antetul AccessKey cu parola zonei de stocare).
    • S3 (compatibil) — Endpoint S3 (fără bucket), bucket-ul, Regiune (gol = auto), Access Key ID și Secret Access Key. Adrese path-style rămâne pornit pentru aproape toate stocările.
  3. Calea la destinație — implicit live/{slug}/. {slug} este identificatorul canalului, {id} id-ul lui; sub câmpul vedeți calea reală.
  4. Adresa de redare (opțional) — adresa de la CDN pe care o dați privitorilor, cu {slug}, de exemplu https://cdn.domeniul-dumneavoastra.ro/live/{slug}/index.m3u8. Apare la Livrare ca CDN · HLS.
  5. Testează legătura — Castreon scrie un fișier mic de test sub calea canalului și îl șterge. Vedeți timpul sau eroarea exactă a destinației.
  6. Salvează.

Parolele, valorile antetelor și cheile secrete se păstrează pe server și nu se mai afișează: după salvare câmpul arată „•••••••• salvată”. Lăsați câmpul gol ca să rămână, sau scrieți o valoare nouă. Ele nu apar nici în răspunsurile API, nici în jurnalul de audit, nici în raportul de diagnostic.

Canalul nu are nevoie de o ieșire HLS separată: dacă nu are, Castreon o adaugă singur, fiindcă push-ul urcă HLS-ul canalului.

Cum urcă

  • Ordinea: întâi segmentul, apoi playlistul calității, apoi playlistul master (la mai multe calități). Un player nu vede niciodată în playlist un segment care nu există încă la CDN.
  • Numele segmentelor nu se repetă niciodată, nici după repornirea canalului sau a serverului. Un CDN nu poate da din cache un segment vechi în locul unuia nou.
  • Repornirea canalului apare în playlist ca discontinuitate corectă; playerele trec peste ea fără să se oprească.
  • Cache: segmentele se trimit cu Cache-Control: public, max-age=31536000, immutable, playlisturile cu un timp de cache de jumătate din durata unui segment.
  • Segmentele vechi se șterg de la destinație după ce au ieșit din playlist de încă o fereastră întreagă (playerele rămase în urmă le mai găsesc). Opriți Șterge segmentele vechi de la destinație dacă stocarea le șterge singură.
  • La o eroare de rețea, fiecare fișier se încearcă de până la 3 ori. Erorile de acces (401, 403) nu se reîncearcă — mesajul apare imediat pe pagina canalului.

Setările de la CDN

  • Cache-ul playlisturilor: la HTTP PUT, multe stocări CDN nu păstrează antetul Cache-Control trimis de Castreon. Puneți la CDN o regulă pentru fișierele .m3u8: 1–2 secunde în cache. Fără ea, privitorii pot primi un playlist vechi și imaginea se oprește. Segmentele se pot ține mult în cache.
  • La S3, Cache-Control se salvează ca metadate ale fiecărui obiect, iar CDN-ul din fața bucket-ului îl folosește de obicei singur.
  • CORS pentru playerele din browser: permiteți GET și HEAD de la orice origine pentru .m3u8, .ts, .m4s și .mp4.
  • Accesul privitorilor îl hotărăște CDN-ul (de exemplu adrese semnate la CDN). Tokenul de acces al nodului nu se aplică adreselor de la CDN.

Pe pagina canalului

Cardul Push către CDN arată pentru fiecare ieșire: starea (urcă, așteaptă canalul, eroare, fără licență), destinația, adresa de redare, ultima urcare (când, ce fișier, în câte milisecunde), câte segmente și MB s-au trimis, câte s-au șters și ultima eroare.

În /metrics găsiți castreon_cdn_push_up, castreon_cdn_push_segments_total, castreon_cdn_push_bytes_total, castreon_cdn_push_errors_total și castreon_cdn_push_upload_seconds — vedeți Metrici și Grafana.

Limite

  • Se urcă HLS (segmente TS sau fMP4, toate calitățile). LL-HLS nu se urcă.
  • HLS criptat AES-128 nu se poate urca: cheia rămâne pe server.
  • Un canal La cerere nu poate avea push: nu vede privitorii de la CDN și s-ar opri.
  • Fără licența potrivită, ieșirea rămâne salvată, dar nu urcă nimic (starea fără licență).

Probleme frecvente

  • HTTP 401 / HTTP 403: datele de acces nu sunt bune sau nu au drept de scriere pe acea zonă / bucket. La S3, SignatureDoesNotMatch înseamnă de obicei cheia secretă greșită sau un endpoint greșit.
  • HTTP 404 la test: adresa de scriere sau bucket-ul nu există.
  • Imaginea se oprește la privitori, deși cardul arată „urcă”: verificați regula de cache pentru .m3u8 la CDN (1–2 secunde).
  • Playerul din browser nu pornește, dar VLC merge: lipsește CORS la CDN.
  • Ultima urcare durează mult (milisecundele de pe card cresc): destinația e lentă sau departe de server. Alegeți o zonă de stocare apropiată de server.

Confidențialitate

Cookie-uri și stocare locală

Cookie-urile strict necesare sunt mereu active. Statisticile și marketingul folosesc servicii Google și pornesc doar dacă le accepți — până atunci nu se trimite nimic la Google. Îți poți retrage acordul oricând, aici.

Strict necesare

Fără ele nu funcționează autentificarea, formularele și limba aleasă. Nu necesită consimțământ (§ 25 alin. 2 pct. 2 TDDDG).

Mereu active
Nume Scop Durată Tip
castreon-session Păstrează sesiunea: autentificarea și limba aleasă 2 ore, prelungit la fiecare accesare Cookie
XSRF-TOKEN Protejează formularele împotriva cererilor falsificate 2 ore, prelungit la fiecare accesare Cookie
remember_web_… Doar dacă bifezi „Ține-mă minte” la autentificare Până la deconectare, max. 400 de zile Cookie
__cf_bm Cloudflare: deosebește vizitatorii de roboți, doar când traficul e verificat 30 de minute Cookie · Cloudflare
castreon:consent Ține minte alegerea ta privind cookie-urile 12 luni Memorie locală
theme Aspectul contului de client: luminos, întunecat sau sistem Până o schimbi Memorie locală

Statistici

Google Analytics 4 (Google Ireland Ltd.): ce pagini sunt vizitate, de unde vin vizitele și de pe ce tip de dispozitiv — cu identificatori pseudonimi, fără salvarea adresei IP. Ne ajută să îmbunătățim site-ul.

Nume Scop Durată Tip
_ga Google Analytics: recunoaște vizitatorul (identificator pseudonim) 13 luni Cookie · Google Analytics
_ga_VHWQRPHPEF Google Analytics: păstrează starea vizitei 13 luni Cookie · Google Analytics

Marketing

Google Ads (Google Ireland Ltd.): măsoară dacă vizitele venite din reclame Google ajung la test sau la un plan și permite afișarea reclamelor Castreon pe alte site-uri (remarketing).

Nume Scop Durată Tip
_gcl_au, _gcl_aw Google Ads: leagă vizita de clicul pe reclamă (conversii) 90 de zile Cookie · Google Ads
IDE, test_cookie Google Ads: remarketing și măsurarea reclamelor, pe domeniile Google (doubleclick.net) Până la 13 luni Cookie · Google (terț)