Education·7 min

De Shamir

Ce este un fișier .TS și de ce sunt formate streamurile tale din astfel de fișiere

Dacă te-ai uitat vreodată în interiorul unui manifest de streaming, ai văzut o listă de fișiere care se termină în .ts. Dacă ai extras vreodată un videoclip de pe un dispozitiv de înregistrare sau de pe o placă de captură, este posibil să fi obținut unul. Iar dacă ai încercat vreodată să-l deschizi făcând dublu clic pe el, există șanse bune să nu se fi întâmplat nimic.

.ts înseamnă MPEG Transport Stream și este unul dintre cele mai discret importante formate video. A fost conceput pentru difuzarea prin satelit și terestră în anii ’90, iar trei decenii mai târziu a ajuns să transporte o parte uriașă din streamingul pe internet — dintr-un motiv cu adevărat elegant, odată ce îl înțelegi.

Ce este, de fapt, un Transport Stream

Majoritatea formatelor video pe care le cunoști sunt fișiere: un container cu un antet la început, un index al poziției tuturor elementelor și un final definit. MP4 funcționează astfel. Este conceput să stea pe un disc și să poți naviga prin el.

Un transport stream nu are această structură. Este un flux continuu de pachete mici, de dimensiune fixă — câte 188 de octeți fiecare — care poate fi preluat în orice moment.

Această decizie de design a venit din lumea radiodifuziunii. Când comuți televizorul pe un canal, nu începi de la începutul unui material. Te conectezi la un semnal deja în desfășurare, iar imaginea trebuie să apară într-o secundă sau două. Un format cu un antet la început și un index ar fi inutil: nu există un început.

Așadar, un transport stream repetă continuu tot ce ai nevoie. Din când în când, retransmite tabelele care descriu ce streamuri conține și include periodic un keyframe complet de la care poți începe decodarea. Te poți conecta în orice punct și poți începe redarea într-o secundă.

Aceasta este ideea de bază și explică tot restul.

De ce l-a adoptat streamingul pe internet

HLS — metoda de streaming din spatele majorității videoclipurilor live pe care le urmărești — funcționează prin împărțirea conținutului în segmente scurte, de obicei între două și zece secunde, și listarea lor într-un manifest. Playerul tău descarcă segmentele pe rând, iar dacă internetul încetinește, începe discret să solicite versiuni de calitate mai scăzută, în loc să se blocheze.

Pentru ca acest lucru să funcționeze, fiecare segment trebuie să poată fi decodat independent. Segmentul 47 nu poate depinde de un antet care există doar în segmentul 1, deoarece playerul s-ar putea conecta direct la 47 sau ar putea schimba nivelul de calitate între 46 și 47.

Transport streamul era deja exact acest format. Auto-descriptiv, pornibil de oriunde, rezistent la pierderi. HLS nu a trebuit să inventeze un format de segment; a moștenit unul din radiodifuziune, care rezolva aceeași problemă încă de dinainte ca webul să aibă videoclipuri.

Așadar, când te uiți în interiorul unui manifest .m3u8 și vezi:

#EXTINF:6.000,
segment000.ts
#EXTINF:6.000,
segment001.ts

acestea sunt fragmente de transport stream de câte șase secunde. Streamul tău nu este un singur videoclip. Sunt mii de videoclipuri mici, solicitate în ordine. (De ce asta înseamnă că nu poți pur și simplu „converti” un stream în MP4.)

.TS comparativ cu .MP4

.ts (MPEG-TS).mp4
StructurăFlux continuu de pacheteFișier indexat cu antet
Poți începe de oriunde?DaNu — are nevoie de antet
Rezistă la pierderi?Da, se resincronizează la următorul pachetDeteriorarea poate face întregul fișier inutilizabil
NavigareLentă, fără indexRapidă, cu index
SuprasarcinăMai mare (antetele se repetă constant)Mai mică
Conceput pentruDifuzare și streaming liveStocarea și redarea fișierelor complete

Niciunul nu este mai bun. Rezolvă probleme opuse. .ts este optimizat pentru a ajunge; .mp4 este optimizat pentru a sta pe loc.

De aceea conversia între ele este o operațiune obișnuită și, în principiu, fără pierderi — videoclipul și sunetul din interior pot fi identice, schimbându-se doar containerul.

Unde întâlnești fișiere .TS în lumea reală

  • În streamurile HLS. Segmente, după cum am explicat mai sus. Nu le vezi niciodată individual; playerul le descarcă și le elimină.
  • De la o sursă de tip Xtream cu output=ts. Parametrul respectiv îi solicită serverului un transport stream brut, nu HLS segmentat. (Cum sunt construite aceste URL-uri.)
  • De la echipamente de captură pentru difuzare. Tunerele, plăcile de captură și dispozitivele de înregistrare scriu adesea direct în .ts, deoarece acesta este formatul semnalului recepționat.
  • Pe discurile Blu-ray, sub forma .m2ts — o rudă apropiată.
  • De la camere video, în special modelele AVCHD, care folosesc tot .m2ts.

Când un fișier .TS nu pornește

Se întâmplă des și, de obicei, din unul dintre cinci motive.

1. Nu există o asociere de fișiere. Windows și macOS nu includ un handler pentru .ts. Dublul clic nu face nimic sau deschide ceva inutil. Nu este vorba despre corupere; fișierul nu are nicio problemă. Deschide-l din interiorul unui player.

Mai rău: pe unele sisteme, .ts este asociat cu un editor de cod, deoarece este și extensia fișierelor sursă TypeScript. Deschiderea unui videoclip într-un editor de text este derutantă, dar inofensivă.

2. Problema este codecul din interior, nu containerul. .ts este un container. În interior poate fi MPEG-2 (pentru difuzări mai vechi), H.264 sau HEVC. Dacă dispozitivul tău nu poate decoda codecul, containerul nu mai contează. Simptomul clasic este redarea sunetului cu imagine neagră. (Ecran negru, dar sunetul funcționează.)

MPEG-2 este un vinovat frecvent aici: este foarte vechi, iar unele dispozitive moderne nu mai includ un decodor pentru el, deoarece nimeni nu se aștepta să mai fie necesar.

3. Sunet neobișnuit. Transport streamurile pentru difuzare conțin frecvent sunet AC-3, E-AC-3 sau DTS. Videoclipul rulează, dar nu se aude nimic. Este o problemă legată de codecul audio sau de passthrough, nu de container. (Soluții pentru lipsa sunetului.)

4. O captură întreruptă. O captură întreruptă în timpul scrierii produce un fișier parțial. Transport streamul se degradează elegant — de obicei va fi redat până la întrerupere — acesta fiind unul dintre avantajele sale reale față de MP4, unde un fișier trunchiat s-ar putea să nu se deschidă deloc.

5. Navigarea este lentă și pare că fișierul nu funcționează. Nu există un index, așa că un player care derulează într-un fișier .ts mare trebuie să-l scaneze. Navigarea lentă într-un fișier transport stream de dimensiuni mari este un comportament normal, nu o defecțiune.

Ce software poate deschide un astfel de fișier

Pentru un fișier .ts de pe desktop, playerele universale se descurcă bine. VLC și mpv sunt răspunsurile standard și deschid direct transport streamuri, inclusiv pe cele problematice. Într-adevăr, acesta este domeniul în care excelează.

Pentru streamurile livrate prin rețea sub formă de transport stream — o sursă Xtream cu output=ts, un playlist HLS cu segmente .ts, un dispozitiv din rețeaua ta LAN — acesta este rolul de bază al unui player, iar Tuneline le gestionează pe macOS, Windows, Linux, iPhone, iPad, Android, Android TV, Google TV și Apple TV.

Pentru a delimita clar lucrurile, deoarece contează: Tuneline deschide playlisturi și streamuri, nu fișiere video locale. Dacă ai o înregistrare .ts pe hard disk, folosește VLC sau mpv. Dacă primești un transport stream prin rețea, pentru asta este conceput Tuneline.

Întrebarea output=ts versus output=m3u8

Dacă sursa îți permite să alegi — iar sursele de tip Xtream permit — merită să înțelegi această diferență, deoarece schimbarea ei rezolvă multe probleme de redare.

output=ts îți oferă fluxul continuu brut. Compatibilitate foarte largă, funcționează practic oriunde, dar fără bitrate adaptiv. Pe o conexiune slabă, se blochează în loc să reducă treptat calitatea.

output=m3u8 îți oferă HLS segmentat. Se comportă mai bine pe conexiuni instabile, deoarece playerul poate trece la o calitate mai scăzută în timpul redării și, în general, este mai potrivit pentru rețelele mobile.

Sfat practic: încearcă mai întâi m3u8 pe telefoane și pe rețele Wi-Fi slabe; încearcă ts când ceva refuză complet să pornească. Schimbarea parametrului presupune editarea unui singur caracter și rezolvă un procent surprinzător de mare dintre situațiile de tip „nu pornește”. (De ce se întrerup streamurile și ce rezolvă de fapt problema.)

Concluzia

  • .ts este MPEG Transport Stream, conceput pentru difuzare: un flux continuu de pachete la care te poți conecta în orice moment.
  • HLS l-a adoptat deoarece streamingul are nevoie de segmente care pot fi decodate independent, exact ceea ce era deja acest format.
  • Streamul tău live este format din mii de segmente .ts scurte, nu dintr-un singur fișier.
  • .ts poate începe de oriunde și rezistă la deteriorări; .mp4 permite navigarea rapidă și stochează eficient. Roluri diferite.
  • Eșecurile redării sunt de obicei cauzate de codecul din interior (MPEG-2, HEVC, AC-3), nu de container.
  • Căutarea lentă într-un .ts de dimensiuni mari este normală — nu există un index.

Primești un flux de transport prin rețea? Descarcă Tuneline — gratuit, fără conținut inclus, pe toate platformele pe care le deții.

Distribuie articolul

The fast fix

Get Tuneline free

A clean, no-account media player for macOS, Windows, Linux, Android, TV, and iOS. Bring your own playlist.

Download free

The cross-platform media player behind these answers — new platforms, sync updates, the honest build story. No spam, unsubscribe anytime.

Citește acest articol în altă limbă

Tuneline este o aplicație de redare multimedia. Nu furnizează, nu găzduiește și nu distribuie niciun conținut. Propria listă de redare o aduci tu, exact ca la VLC.