Education·7 min

Di Shamir

Che cos'è un file .TS e perché i tuoi stream ne sono composti

Se hai mai guardato dentro il manifest di uno stream, avrai visto un elenco di file che terminano con .ts. Se hai mai acquisito un video da un registratore o da una scheda di acquisizione, potresti esserti ritrovato con uno di questi file. E se hai mai provato ad aprirne uno facendo doppio clic, è molto probabile che non sia successo nulla.

.ts sta per MPEG Transport Stream ed è uno dei formati più importanti, anche se poco noti, nel mondo dei video. È stato progettato per le trasmissioni satellitari e terrestri negli anni '90, finendo poi, tre decenni più tardi, per veicolare una quota enorme dello streaming su Internet — per un motivo davvero elegante, una volta compreso.

Cos'è davvero un Transport Stream

La maggior parte dei formati video che conosci sono file: un contenitore con un'intestazione all'inizio, un indice che indica dove si trova ogni elemento e una fine definita. MP4 funziona così. È progettato per stare su un disco e consentire l'accesso diretto alle varie parti.

Un transport stream non ha questa struttura. È un flusso continuo di piccoli pacchetti di dimensione fissa — 188 byte ciascuno — che può essere agganciato in qualsiasi momento.

Questa scelta progettuale nasce dal mondo delle trasmissioni. Quando sintonizzi un televisore su un canale, non inizi dall'inizio di qualcosa. Ti colleghi a un segnale già in corso e l'immagine deve comparire entro uno o due secondi. Un formato con un'intestazione iniziale e un indice sarebbe inutile: non esiste un inizio.

Perciò un transport stream ripete continuamente tutto ciò che serve. A intervalli regolari reinvia le tabelle che descrivono gli stream contenuti e include periodicamente un keyframe completo da cui iniziare la decodifica. Puoi collegarti in qualsiasi punto e iniziare la riproduzione entro un secondo.

È tutta qui l'idea, e spiega tutto il resto.

Perché lo streaming su Internet lo ha adottato

HLS — il metodo di streaming alla base della maggior parte dei video live che guardi — funziona suddividendo i contenuti in brevi segmenti, in genere da due a dieci secondi, e inserendoli in un manifest. Il lettore recupera i segmenti in sequenza e, se la connessione si indebolisce, inizia silenziosamente a richiedere versioni di qualità inferiore invece di bloccarsi.

Perché funzioni, ogni segmento deve poter essere decodificato autonomamente. Il segmento 47 non può dipendere da un'intestazione presente solo nel segmento 1, perché il lettore potrebbe collegarsi al segmento 47 oppure cambiare qualità tra il 46 e il 47.

Il transport stream era già esattamente questo formato: auto-descrittivo, avviabile in qualsiasi punto e resistente alle perdite. HLS non ha dovuto inventare un formato per i segmenti; ne ha ereditato uno dal mondo delle trasmissioni, che risolveva lo stesso problema già prima che il web avesse i video.

Quindi, quando guardi dentro un manifest .m3u8 e vedi:

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

si tratta di blocchi transport stream da sei secondi. Il tuo stream non è un unico video: è composto da migliaia di piccoli video richiesti in sequenza. (Ecco perché non puoi semplicemente "convertire" uno stream in MP4.)

.TS e .MP4

.ts (MPEG-TS).mp4
StrutturaFlusso continuo di pacchettiFile indicizzato con un'intestazione
Si può iniziare da qualsiasi punto?No — serve l'intestazione
Resiste alle perdite?, si risincronizza sul pacchetto successivoUn danno può compromettere l'intero file
RicercaLenta, senza indiceVeloce, indicizzata
OverheadMaggiore (le intestazioni vengono ripetute continuamente)Minore
Progettato perTrasmissioni e streaming liveArchiviazione e riproduzione di file completi

Nessuno dei due è migliore. Risolvono problemi opposti. .ts è ottimizzato per arrivare; .mp4 è ottimizzato per restare fermo.

Ecco anche perché convertirli l'uno nell'altro è una procedura ordinaria e, in linea di principio, senza perdita: il video e l'audio contenuti possono essere identici, mentre cambia solo il contenitore.

Dove si incontrano i file .TS

  • All'interno degli stream HLS. Sono i segmenti descritti sopra. Non li vedi mai singolarmente: il lettore li recupera e li scarta.
  • Da una sorgente in stile Xtream con output=ts. Quel parametro chiede al server un transport stream grezzo anziché HLS segmentato. (Ecco come vengono costruiti questi URL.)
  • Dall'hardware per l'acquisizione delle trasmissioni. Sintonizzatori, schede di acquisizione e registratori spesso scrivono direttamente in .ts, perché è il formato ricevuto via etere.
  • Sui dischi Blu-ray, come .m2ts — un formato strettamente imparentato.
  • Dalle videocamere, in particolare dai modelli AVCHD, che usano anch'essi .m2ts.

Quando un file .TS non viene riprodotto

È un problema comune, e di solito dipende da una di queste cinque cause.

1. Nessuna associazione di file. Windows e macOS non includono un'applicazione in grado di gestire .ts. Facendo doppio clic non succede nulla oppure si apre qualcosa di poco utile. Non è un problema di corruzione: il file è integro. Aprilo dall'interno di un lettore.

Peggio ancora: su alcuni sistemi .ts è associato a un editor di codice, perché è anche l'estensione dei file sorgente TypeScript. Vedere un video aprirsi in un editor di testo è confuso, ma innocuo.

2. Il codec contenuto, non il contenitore. .ts è un contenitore. Al suo interno potresti trovare MPEG-2 (trasmissioni più vecchie), H.264 o HEVC. Se il tuo dispositivo non riesce a decodificare il codec, il contenitore è irrilevante. Il sintomo classico è l'audio che viene riprodotto mentre l'immagine resta nera. (Schermo nero ma audio funzionante.)

MPEG-2 è spesso il responsabile: è un formato antico e alcuni dispositivi moderni non includono più un decoder per questo codec, perché nessuno si aspettava di averne ancora bisogno.

3. Audio insolito. I transport stream delle trasmissioni contengono spesso audio AC-3, E-AC-3 o DTS. Il video viene riprodotto, ma non si sente alcun suono. È un problema del codec audio o del passthrough, non del contenitore. (Soluzioni per l'assenza di audio.)

4. Un'acquisizione troncata. Un'acquisizione interrotta durante la scrittura produce un file parziale. Il transport stream degrada in modo graduale: di solito viene riprodotto fino al punto dell'interruzione. Questo è uno dei suoi vantaggi concreti rispetto a MP4, perché un file troncato in formato MP4 potrebbe non aprirsi affatto.

5. La ricerca è lenta e può sembrare un malfunzionamento. Non essendoci un indice, il lettore deve eseguire una scansione quando sposti il cursore all'interno di un .ts di grandi dimensioni. Una ricerca lenta in un file transport stream voluminoso è un comportamento normale, non un difetto.

Quali programmi possono aprirlo

Per un file .ts sul computer, i lettori di uso generale lo gestiscono bene. VLC e mpv sono le risposte standard ed entrambi aprono direttamente i transport stream, anche quelli più problematici. È proprio uno degli ambiti in cui danno il meglio.

Per gli stream distribuiti in rete come transport stream — una sorgente Xtream con output=ts, una playlist HLS di segmenti .ts, un dispositivo sulla tua LAN — questo è il compito principale di un lettore e Tuneline lo gestisce su macOS, Windows, Linux, iPhone, iPad, Android, Android TV, Google TV e Apple TV.

Per essere precisi sui limiti, perché è importante: Tuneline apre playlist e stream, non file video locali. Se hai una registrazione .ts sul disco rigido, usa VLC o mpv. Se invece ricevi un transport stream tramite rete, è proprio questo il caso d'uso per cui è progettato Tuneline.

La questione output=ts contro output=m3u8

Se la tua sorgente ti permette di scegliere — e le sorgenti in stile Xtream lo permettono — vale la pena capire la differenza, perché cambiare impostazione risolve molti problemi di riproduzione.

output=ts ti fornisce lo stream continuo grezzo. Offre la massima compatibilità e funziona praticamente ovunque, ma non supporta il bitrate adattivo. Con una connessione debole, si blocca invece di ridurre la qualità.

output=m3u8 ti fornisce HLS segmentato. Si comporta meglio sulle connessioni instabili, perché il lettore può passare a una qualità inferiore durante la riproduzione, ed è generalmente più adatto alle reti mobili.

Consiglio pratico: prova prima m3u8 su smartphone e connessioni Wi-Fi al limite; prova ts quando qualcosa si rifiuta del tutto di essere riprodotto. Sostituire il parametro richiede una modifica di un solo carattere e risolve una sorprendente quantità di segnalazioni del tipo "non si riproduce". (Perché gli stream scattano e cosa risolve davvero il problema.)

In sintesi

  • .ts è il MPEG Transport Stream, progettato per le trasmissioni: un flusso continuo di pacchetti a cui puoi collegarti in qualsiasi momento.
  • HLS lo ha adottato perché lo streaming richiede segmenti decodificabili autonomamente, esattamente ciò che questo formato già offriva.
  • Il tuo stream live è composto da migliaia di brevi segmenti .ts, non da un unico file.
  • .ts può iniziare da qualsiasi punto e resiste ai danni; .mp4 consente ricerche rapide e archivia i dati in modo efficiente. Sono progettati per compiti diversi.
  • I problemi di riproduzione sono generalmente dovuti al codec interno (MPEG-2, HEVC, AC-3), non al contenitore.
  • È normale che la ricerca sia lenta in un .ts di grandi dimensioni: non è presente alcun indice.

Stai ricevendo un flusso di trasporto dalla rete? Scarica Tuneline — gratis, senza contenuti inclusi e su tutte le piattaforme che possiedi.

Condividi l'articolo

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.

Leggi questo articolo in un'altra lingua

Tuneline è un'applicazione per la riproduzione multimediale. Non fornisce, non ospita e non distribuisce alcun contenuto. La playlist la porti tu, esattamente come con VLC.