Education·7 min

Af Shamir

Hvad er en .TS-fil, og hvorfor dine streams består af dem

Hvis du nogensinde har kigget i et streammanifest, har du set en liste over filer, der ender på .ts. Hvis du nogensinde har hentet video ud fra en optager eller et capturekort, kan du være endt med en af dem. Og hvis du nogensinde har forsøgt at åbne en ved at dobbeltklikke på den, er der en god chance for, at der ikke skete noget.

.ts står for MPEG Transport Stream, og det er et af videoverdenens vigtigste, men mindst omtalte formater. Det blev udviklet til satellit- og terrestrisk broadcasting i 1990'erne, og tre årtier senere endte det med at bære en enorm del af internetstreamingen — af en grund, der faktisk er elegant, når først man forstår den.

Hvad er en Transport Stream egentlig?

De fleste videoformater, du kender, er filer: en container med en header i starten, et indeks over hvor alting befinder sig, og en defineret slutning. MP4 fungerer sådan. Formatet er lavet til at ligge på en disk, hvor man kan søge i det.

En transport stream er ikke opbygget sådan. Det er en kontinuerlig strøm af små pakker med fast størrelse — 188 byte hver — som kan opfanges på et hvilket som helst tidspunkt.

Den designbeslutning stammer fra broadcasting. Når du stiller fjernsynet ind på en kanal, begynder du ikke fra starten af noget. Du kobler dig på et signal, der allerede er i gang, og billedet skal vises inden for et eller to sekunder. Et format med en header i starten og et indeks ville være ubrugeligt: Der findes ingen start.

Derfor gentager en transport stream løbende alt det, du har brug for. Med jævne mellemrum sender den tabellerne med oplysninger om, hvilke streams der er i den, og den indeholder regelmæssigt et komplet keyframe, som dekodningen kan starte fra. Kobl dig på hvor som helst, og du kan begynde at afspille inden for et sekund.

Det er hele idéen, og den forklarer alt det øvrige.

Hvorfor internetstreaming tog formatet til sig

HLS — streamingmetoden bag de fleste livevideoer, du ser — fungerer ved at opdele indholdet i korte segmenter, typisk på to til ti sekunder, og opliste dem i et manifest. Din afspiller henter segmenterne i rækkefølge, og hvis forbindelsen bliver dårligere, begynder den stille og roligt at hente versioner i lavere kvalitet i stedet for at gå i stå.

For at det kan fungere, skal hvert segment kunne dekodes uafhængigt. Segment 47 må ikke være afhængigt af en header, der kun findes i segment 1, for afspilleren kan koble sig på ved 47 eller skifte kvalitet mellem 46 og 47.

Transport stream var allerede præcis det format. Selvbeskrivende, muligt at starte hvor som helst og modstandsdygtigt over for datatab. HLS behøvede ikke opfinde et segmentformat; det overtog et broadcastformat, der havde løst det samme problem, før internettet kunne vise video.

Så når du kigger i et .m3u8-manifest og ser:

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

så er det seks sekunder lange transport-stream-stykker. Din stream er ikke én video. Den består af tusindvis af små videoer, der hentes i rækkefølge. (Derfor kan du ikke bare "konvertere" en stream til MP4.)

.TS vs. .MP4

.ts (MPEG-TS).mp4
OpbygningKontinuerligt pakkeflowIndekseret fil med en header
Kan starte hvor som helst?JaNej — headeren er nødvendig
Tåler datatab?Ja, synkroniserer ved næste pakkeSkader kan ødelægge hele filen
SøgningLangsom, intet indeksHurtig, indekseret
OverheadHøjere (headere gentages konstant)Lavere
Udviklet tilBroadcasting og live-streamingLagring og afspilning af komplette filer

Ingen af dem er bedre. De løser modsatrettede problemer. .ts er optimeret til at ankomme; .mp4 er optimeret til at ligge stille.

Det er også derfor, at konvertering mellem dem i princippet er rutine og tabsfri — videoen og lyden indeni kan være identiske; det er kun indpakningen, der ændres.

Hvor du møder .TS-filer i praksis

  • I HLS-streams. Segmenter, som beskrevet ovenfor. Du ser dem aldrig enkeltvis; din afspiller henter dem og kasserer dem.
  • Fra en Xtream-lignende kilde med output=ts. Denne parameter beder serveren om en rå transport stream i stedet for segmenteret HLS. (Sådan opbygges de URL'er.)
  • Fra broadcast-captureudstyr. Tunere, capturekort og optagere skriver ofte direkte til .ts, fordi det er det format, signalet ankom i.
  • På Blu-ray-diske, som .m2ts — en nært beslægtet variant.
  • Fra videokameraer, især AVCHD-modeller, som også bruger .m2ts.

Når en .TS-fil ikke vil afspilles

Det er almindeligt, og som regel skyldes det én af fem ting.

1. Ingen filtilknytning. Windows og macOS leveres ikke med en handler til .ts. Et dobbeltklik gør ingenting eller åbner noget, der ikke hjælper. Det skyldes ikke korruption; der er ikke noget galt med filen. Åbn den i stedet fra en afspiller.

Endnu værre: På nogle systemer er .ts knyttet til en kodeeditor, fordi det også er filendelsen for TypeScript-kildefiler. Det er forvirrende, men ufarligt, hvis en video åbnes i en teksteditor.

2. Codecet indeni, ikke containeren. .ts er en indpakning. Indholdet kan være MPEG-2 (ældre broadcasting), H.264 eller HEVC. Hvis din enhed ikke kan dekode codecen, er containeren irrelevant. Det klassiske symptom er lyd med sort billede. (Sort skærm, men lyden virker.)

MPEG-2 er en almindelig synder her: Det er urgammelt, og nogle moderne enheder har ikke længere en dekoder til det, fordi ingen forventede stadig at få brug for en.

3. Usædvanlig lyd. Broadcast-transportstreams indeholder ofte AC-3-, E-AC-3- eller DTS-lyd. Videoen afspilles, men der er ingen lyd. Det er et problem med lydcodecen eller passthrough — ikke med containeren. (Løsninger på manglende lyd.)

4. En afbrudt capture. En optagelse, der afbrydes midt i skrivningen, giver en delvis fil. Transport stream håndterer det forholdsvis pænt — den kan som regel afspilles frem til afbrydelsen — hvilket er en af dens reelle fordele sammenlignet med MP4, hvor en afkortet fil måske slet ikke kan åbnes.

5. Søgning er langsom, og det kan ligne en fejl. Der er ikke noget indeks, så en afspiller, der søger gennem en stor .ts, er nødt til at scanne. Langsom søgning i en stor transport-stream-fil er normal adfærd, ikke en fejl.

Hvilken software kan åbne den?

Til en .ts-fil på computeren håndterer alsidige afspillere formatet fint. VLC og mpv er standardløsningerne, og begge åbner transportstreams direkte, også de besværlige. Det er helt enkelt det, de er bedst til.

Til streams, der leveres som transport stream over et netværk — en Xtream-kilde med output=ts, en HLS-playliste med .ts-segmenter eller en enhed på dit LAN — er det afspillerens kerneopgave, og Tuneline håndterer det på tværs af macOS, Windows, Linux, iPhone, iPad, Android, Android TV, Google TV og Apple TV.

For at skelne præcist mellem de to ting, fordi det er vigtigt: Tuneline åbner playlister og streams, ikke lokale videofiler. Hvis du har en .ts-optagelse liggende på harddisken, skal du bruge VLC eller mpv. Hvis der kommer en transport stream ind over netværket, er det det, Tuneline er udviklet til.

Spørgsmålet om output=ts vs. output=m3u8

Hvis din kilde lader dig vælge — og Xtream-lignende kilder gør — er det værd at forstå forskellen, fordi et skift ofte løser mange afspilningsproblemer.

output=ts giver dig den rå, kontinuerlige stream. Den har den bredeste kompatibilitet og fungerer stort set overalt, men har ingen adaptiv bitrate. På en svag forbindelse går den i stå i stedet for at sænke kvaliteten.

output=m3u8 giver dig segmenteret HLS. Det fungerer bedre på ustabile forbindelser, fordi afspilleren kan skifte til lavere kvalitet midt i streamen, og det er generelt mere velegnet til mobilnetværk.

Praktisk råd: Prøv m3u8 først på telefoner og ustabilt Wi-Fi; prøv ts, når noget slet ikke vil afspilles. Det kræver kun, at du ændrer ét tegn i parameteren, og det løser overraskende mange tilfælde, hvor "den vil ikke afspilles". (Hvorfor streams hakker, og hvad der faktisk løser det.)

Kort fortalt

  • .ts er MPEG Transport Stream, udviklet til broadcasting: et kontinuerligt pakkeflow, som du kan koble dig på når som helst.
  • HLS tog formatet til sig, fordi streaming kræver segmenter, der kan dekodes uafhængigt, og det var netop allerede sådan.
  • Din livestream består af tusindvis af korte .ts-segmenter, ikke én fil.
  • .ts kan starte hvor som helst og tåler skader; .mp4 understøtter hurtig søgning og lagrer effektivt. Forskellige opgaver.
  • Afspilningsfejl skyldes som regel den indbyggede codec (MPEG-2, HEVC, AC-3), ikke containeren.
  • Langsom søgning i en stor .ts er normalt — der findes ikke noget indeks.

Kommer der en transportstrøm ind over netværket? Download Tuneline — gratis, uden medfølgende indhold, på alle dine platforme.

Del denne artikel

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.

Læs denne artikel på et andet sprog

Tuneline er en medieafspiller. Den leverer, hoster eller distribuerer ikke noget indhold. Du medbringer din egen playliste, præcis som med VLC.