# Streaming Protocols Supported by Free-TV/IPTV: HLS, MPEG-DASH, and SMIL Explained

> Explore Free-TV/IPTV streaming protocols: HLS, MPEG-DASH, and SMIL. Learn how our platform delivers content efficiently.

- Repository: [Free TV/IPTV](https://github.com/Free-TV/IPTV)
- Tags: deep-dive
- Published: 2026-06-26

---

**Free-TV/IPTV primarily delivers content via HLS (M3U8) playlists while also supporting MPEG-DASH manifests, SMIL wrappers, and direct transport stream segments within its playlist files.**

Free-TV/IPTV is an open-source repository that aggregates IPTV channels into standardized playlist formats. The project generates **M3U8 playlists** (the HLS format) as its core distribution method, while accommodating multiple underlying streaming protocols. Understanding the streaming protocols supported by Free-TV/IPTV helps developers configure compatible players and troubleshoot playback issues across different network conditions.

## How Free-TV/IPTV Structures Its Streaming Architecture

The repository's playlist generation logic resides in [`make_playlist.py`](https://github.com/Free-TV/IPTV/blob/main/make_playlist.py), which processes per-country markdown files stored in the `lists/` directory. This script outputs a master `playlist.m3u8` file as well as per-country playlists in the `playlists/` folder, creating a standardized HLS container that references various underlying streaming technologies.

## Primary Streaming Protocols Detailed

### HLS (HTTP Live Streaming)

HLS is the dominant protocol in this repository. The master `playlist.m3u8` and country-specific variants use the `.m3u8` extension, containing URLs that point to streaming endpoints. For example, `playlists/playlist_zz_vod_it.m3u8` at line 3 references `https://di-g7ij0rwh.vo.lswcdn.net/sportitalia/silive24.smil/playlist.m3u8`, demonstrating how SMIL-wrapped HLS streams are included in the aggregation.

### MPEG-DASH

While the container format remains M3U8, some entries point directly to DASH manifests (`.mpd` files). The `playlists/playlist_sweden.m3u8` file at line 3 includes entries like `https://ed2.cdn.svt.se/ed7/d1/c/se/svt1/manifest.mpd?defaultSubLang=1`, enabling players with DASH support to stream these channels natively.

### SMIL Wrappers

Many URLs utilize SMIL (Synchronized Multimedia Integration Language) manifests as intermediate wrappers. These `.smil` files, served by CDNs, resolve to actual HLS or DASH streams. An example from `playlists/playlist_italy.m3u8` at line 115 shows `https://kk.fluid.stream/KKMulti/smil:KissKissTV.smil/playlist.m3u8`, illustrating how broadcasters use SMIL to manage multi-bitrate streams.

### Direct Transport Streams and Progressive Media

Some entries bypass manifest files entirely, pointing directly to `.ts` (MPEG-TS) segments or `.mp4` files. The master `playlist.m3u8` at line 223 contains entries like `http://4ce5e2d62ee2c10e43c709f9b87c44d5.streamhost.cc/m3u8/Belgium/9ef55f75bc15308.ts` for raw transport streams. Additionally, line 1539 references progressive download formats like `https://dc3.telesveva.com:4433/news24.mp4`.

## Key Files in the Repository

| File | Role |
|------|------|
| [`make_playlist.py`](https://github.com/Free-TV/IPTV/blob/main/make_playlist.py) | Generates master and per-country M3U8 playlists from markdown source files in `lists/` |
| `playlist.m3u8` | Master HLS playlist containing all channel references |
| `playlists/*.m3u8` | Per-country playlists containing localized stream URLs (HLS, DASH, SMIL) |
| `lists/*.md` | Source markdown files defining channel metadata and URLs used by the generation script |

## Working with Free-TV/IPTV Playlists

### Extracting Stream URLs with Python

```python

# Example: download the master playlist and list all HLS URLs

import requests, re

master_url = "https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8"
playlist = requests.get(master_url).text

# Extract all lines that look like a URL (skip comment lines)

streams = [line for line in playlist.splitlines() if line and not line.startswith('#')]
for url in streams:
    print(url)

```

### Playing Streams with VLC

```bash

# Play the master playlist with VLC (or any HLS‑compatible player)

vlc https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8

```

### Testing DASH Streams with FFmpeg

```bash

# Show that a DASH stream can be played with ffmpeg

ffmpeg -i https://ed2.cdn.svt.se/ed7/d1/c/se/svt1/manifest.mpd -c copy -f null -

```

## Summary

- **HLS (M3U8)** is the primary container format used by Free-TV/IPTV, generated by [`make_playlist.py`](https://github.com/Free-TV/IPTV/blob/main/make_playlist.py) from markdown source files in the `lists/` directory.
- **MPEG-DASH** manifests are supported through direct `.mpd` URLs embedded within the M3U8 playlists, as seen in the Sweden playlist entries.
- **SMIL wrappers** serve as CDN-level intermediaries that resolve to HLS or DASH streams, commonly found in Italian and sport channel entries.
- **Direct MPEG-TS segments** and **MP4 files** provide alternative delivery methods for specific channels, referenced by absolute URLs in the master playlist.
- The repository architecture separates data sources (`lists/`) from generated playlists (`playlists/` and `playlist.m3u8`), maintaining a clean separation between configuration and distribution.

## Frequently Asked Questions

### Does Free-TV/IPTV support MPEG-DASH?

Yes. While the project standardizes on HLS (M3U8) playlist containers, individual entries may point to MPEG-DASH manifests (`.mpd` files). Players with DASH capabilities can stream these URLs directly, as evidenced by entries in `playlists/playlist_sweden.m3u8` referencing SVT streams with `.mpd` extensions.

### What is the primary playlist format used by Free-TV/IPTV?

The primary format is **M3U8** (HLS playlist). The [`make_playlist.py`](https://github.com/Free-TV/IPTV/blob/main/make_playlist.py) script generates these files from markdown source data, creating a master `playlist.m3u8` and per-country variants in the `playlists/` directory. Most IPTV players consume this format natively.

### Can I play Free-TV/IPTV streams in VLC?

Yes. VLC supports HLS playlists natively. You can load the master playlist directly using `vlc https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8` or open any individual `.m3u8` file from the repository. VLC will automatically handle HLS streams, DASH manifests, and direct transport stream segments.

### What are SMIL wrappers in the context of Free-TV/IPTV?

SMIL (Synchronized Multimedia Integration Language) wrappers are XML-based manifests used by CDNs to describe multimedia presentations. In Free-TV/IPTV, many URLs point to `.smil` files that resolve to actual streaming protocols like HLS or DASH, particularly for channels distributed through specific CDN networks such as those used by Sportitalia and Kiss Kiss TV.