Streaming Protocols Supported by Free-TV/IPTV: HLS, MPEG-DASH, and SMIL Explained
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, 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 |
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
# 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
# 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
# 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.pyfrom markdown source files in thelists/directory. - MPEG-DASH manifests are supported through direct
.mpdURLs 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/andplaylist.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 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.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →