MPEG-TS at a glance
- Standard
- ISO/IEC 13818-1, also published as ITU-T H.222.0 (latest edition April 2025)
- Packets
- 188 bytes each, starting with the sync byte 0x47 (204 bytes where broadcast adds error correction)
- Tables
- A PAT on PID 0x0000 points to the PMT, which lists the video, audio and subtitle streams
- In IPTV
- Continuous .ts streams, and the segments inside many HLS streams
From ITU-T, ETSI TR 101 290 V1.4.1 (2020) and RFC 8216.
A container, not a codec
MPEG-TS packages already-compressed video, audio and subtitles so they can travel together and stay in step. It doesn’t decide picture quality; the codecs inside do. A transport stream can carry MPEG-2, H.264 or H.265 video, and AAC, Dolby Digital or other audio. See video and audio codecs for IPTV.
It was designed for broadcasting, where a receiver can tune in at any moment and errors are a fact of life. Those two design goals explain most of its behaviour in IPTV.
How a transport stream is built
Fixed-size packets
Everything is cut into packets of 188 bytes. Each starts with the same sync byte, 0x47, so a receiver can lock on to the packet boundaries. ETSI’s measurement guidelines for DVB treat the sync byte not appearing after 188 bytes (or 204, where broadcast adds error correction) as a first-priority error.
Packet IDs
Each packet carries a PID, a number saying which stream it belongs to: the video, one audio track, another audio track, subtitles, and so on. Your player follows the PIDs it needs and ignores the rest.
The tables that make it playable
A player can’t decode anything until it knows which PIDs hold what. Two tables tell it:
- The PAT (programme association table), always on PID 0x0000, points to the programme’s map.
- The PMT (programme map table) lists the PIDs of the video, audio and subtitle streams.
ETSI’s guidelines treat a PAT or PMT that doesn’t repeat at least every half second as an error that’s “essential for access to TS data”. That repetition is what lets a receiver join a channel at any moment.
What this means for IPTV
Channel changes. When you switch channel, the player has to find the sync bytes, wait for the PAT and PMT, then wait for a complete picture (a key frame) before it can show anything. That’s why even a fast channel change takes a moment.
Glitches from lost packets. Each packet also carries a continuity counter. When packets go missing or arrive out of order, the counter jumps, and ETSI lists this as a continuity count error. The result on screen is a few blocky or smeared frames, or a short freeze, until the next clean picture. On IPTV, lost packets usually mean a congested connection or a busy server. See IPTV freezing.
Inside HLS. HLS streams can use transport stream segments. The HLS specification requires each segment to contain a single programme and a PAT and PMT (or an equivalent map), so every segment can be decoded on its own.
MPEG-TS in your IPTV app
With an Xtream Codes login, the server reports which output formats it allows; documented examples list m3u8 (HLS) and ts. Many players let you choose between them in the playlist or playback settings:
- TS (MPEG-TS): one continuous stream per channel. It often starts faster and runs closer to live.
- M3U8 (HLS): the same content cut into segments, which can cope better with a variable connection.
Neither is better for every home. Our HLS vs MPEG-TS guide has a two-minute test to choose, and IPTV streaming protocols covers the other formats you may meet.
