The Problem
Every IPTV "review" you find online was written by someone who watched Netflix
for 20 minutes and called it a benchmark. We decided to do it properly.
Here's a complete walkthrough of how we built and ran a 72-hour automated
stress test rig for evaluating IPTV provider infrastructure.
The Rig
Our test environment consists of three layers:
Layer 1: Client Devices (3 simultaneous)
DEVICES = [
{"name": "Firestick 4K Max", "resolution": "3840x2160", "player": "MX Player"},
{"name": "Nvidia Shield Pro", "resolution": "3840x2160", "player": "TiviMate"},
{"name": "Chrome Browser", "resolution": "1920x1080", "player": "HLS.js v1.5"},
]
Layer 2: Network Measurement
# Packet capture on the reference interface
tcpdump -i eth0 -w capture_$(date +%H%M).pcap &
TCPDUMP_PID=$!
# Real-time bitrate calculation from capture
tshark -r capture_$(date +%H%M).pcap -q -z io,stat,1 -Y "tcp.port == 443" | python3 parse_bitrate.py --output metrics/bitrate.json
Layer 3: Automated Channel Switching
import time, random, subprocess
from datetime import datetime
CHANNELS = ["ESPN", "SkySports1", "TSN1", "FoxLeague", "BeIn1"]
def automated_zap_test(duration_minutes=60, interval_seconds=90):
results = []
end_time = time.time() + (duration_minutes * 60)
while time.time() < end_time:
channel = random.choice(CHANNELS)
start = time.time()
switch_channel(channel) # ADB command to player
wait_for_playback() # Poll player for stream-started event
zap_ms = (time.time() - start) * 1000
results.append({"channel": channel, "zap_ms": round(zap_ms)})
time.sleep(interval_seconds)
return results
The Peak Load Windows
We specifically timed our 72 hours to overlap:
- NFL Sunday (US, 4–11 PM ET) — highest US concurrent viewer load
- Premier League Saturday (UK, 12:30–5:30 PM GMT) — highest UK load
- NHL Playoff Overtime — unpredictable duration, maximum CDN stress
- NRL Round (Australia, 7:30 PM AEST) — highest AU concurrent load
Key Finding
The metric that best predicted overall performance quality was CDN PoP
proximity — the physical distance from the test location to the nearest
confirmed CDN edge node. Providers with edge nodes within 100km consistently
delivered < 0.3% frame drop rate. Those routing traffic transnationally
averaged 2.1% frame drop.
Full Results
All 20 providers, all 72 hours of data:
→ Read the Complete Benchmark Report
Takeaway for Developers
If you're building tooling around IPTV quality measurement:
- Measure at the network interface, not the player
- Use packet capture, not ISP speed tests
- Always test during a live sports fixture — never off-peak
Tooling and methodology available on request.
Top comments (0)