Kaleidocast: IPTV Client
Project Overview
A cross-platform IPTV client for macOS, iOS, and tvOS, simplifying access to free over-the-air channels and other IPTV content.
Category
Links
Collaborators
Solo Project
Date
January 2023 - Present
My Role
Overview
IPTV (Internet Protocol Television) is a digital television broadcasting system that delivers TV content over IP networks. It allows users to stream live TV channels and on-demand content through internet-connected devices rather than traditional cable or satellite systems.
The Problem
- Navigating IPTV formats is challenging for non-technical users
- There's a lack of user-friendly interfaces for managing IPTV content
- Inconsistent experience across different devices and platforms
Content Distribution
IPTV content is typically shared and accessed through two primary methods:
-
M3U Playlists:
- M3U (Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator) is a file format for multimedia playlists.
- In IPTV, M3U files contain lists of TV channels and their streaming URLs.
- For a collection of free and legal IPTV resources, check out the iptv-org/iptv repository on GitHub.
-
EPG (Electronic Program Guide) Data:
- EPG provides detailed information about TV programs, including schedules, descriptions, and metadata.
- It's usually distributed in XMLTV format, a standardized XML structure for TV listings.
Kaleidocast Apple TV Homepage
The Solution
The goal was to create a tool that not only simplified the technical complexities of IPTV but also offers a consistent experience across different platforms.
How it works:
- Import any M3U playlist e.g. (open source) and/or EPG data by entering the URL in 'Sources' tab
- I also built handling for Xtreme Codes API, which is popular with IPTV services
- That's it! The interface and functionality should be very similar to what people are accustomed to with other popular streaming services, just that if you don't have access to a show, channel or movie .
- You don't even need to add sources for this to have utility as it will tell you where to watch sporting events, or notify you when the next episode of a show is available
- For the advanced user, you can also view the raw files that were ingested in the event that we weren't able to match a piece of content
System Design
-
Wrote custom parsers for M3U playlist and EPG data to efficiently ingest data and handling refreshing
-
Store playlist / EPG data on top of Core Data for efficient local storage
-
iCloud sync for cross-device data. If you started watching a show on your iPhone, you can pick up the progress from Apple TV
-
Dynamic video player selection based on content format and codec. Apple's built-in player library does not cover nearly enough formats so I needed to support at least one more player as a catch-most
-
Integrated with TheMovieDB and TheSportsDB APIs to provide the content metadata, with custom matching logic that searches the user's database if they have the ability to play that content
-
Wrote custom algorithms for ranking sports events and popular content depending on user's location and seasonality (e.g. Olympics)
-
iOS and macOS share similar design interfaces (tap / click), however tvOS has a different paradigm which is 'focus' based, so it was a challenge to write code in a composable way that ~80% could be shared
-
Wrote a custom UI on top of VLC player framework, as there were no libraries that existed for this
System Design
Impact and Future Plans
Current Impact
- Simplifies IPTV access for non-technical users
- Consistent experience across Apple ecosystems
User Feedback
- Positive feedback from early adopters
- Recieved requests for additional features and platform support (Chromecast, Roku / Google TV)
Future Plans
- Expanding the app to Android
- Adding the ability to share playlists and recommendations
Screenshots
Mobile Sources Page
Apple TV Home Screen
Apple TV Episode Detail
macOS Live TV Guide
Mobile TV Guide
Apple TV Guide
macOS Home Screen
macOS Program Detail
Mobile Live TV Detail
Custom VLC Player for Apple TV
macOS Sources Page