ɳTV
ɳTV is an open-source media player built on ɳSelf. It runs on six platforms, iOS, Android, macOS, Windows, Linux, and Web, from a single Flutter codebase. Users self-host the backend with the ɳSelf CLI and the ɳTV plugin bundle.
GitHub: nself-org/ntv License: MIT Status: Active
What ɳTV Does
Section titled “What ɳTV Does”ɳTV turns your ɳSelf backend into a personal media server you control. Your media library lives on your hardware. The ɳTV client on any supported device plays it back with server-side adaptive streaming, automatic metadata enrichment, and an electronic program guide for live TV.
Free Capability (no backend required)
Section titled “Free Capability (no backend required)”Add any IPTV M3U playlist URL in Settings and browse live channels immediately. No account, no license key, no backend needed for this path.
Full Capability (ɳTV bundle, $0.99/mo)
Section titled “Full Capability (ɳTV bundle, $0.99/mo)”With a self-hosted ɳSelf backend running the ɳTV plugin bundle:
| Feature | What You Get |
|---|---|
| Library | Browse your full media catalog with TMDB poster art, ratings, and genres |
| Adaptive streaming | HLS/DASH with server-side transcoding for any bitrate |
| EPG | Electronic Program Guide for live channels, including recording with the recording plugin |
| Progress sync | Resume any title from any device |
| Media acquisition | Automated download and organization via torrent-manager and content-acquisition |
| Subtitle search | Auto-download subtitles from OpenSubtitles and sync them to playback |
Platform Matrix
Section titled “Platform Matrix”| Platform | Video Engine | HLS | DASH | Background Play |
|---|---|---|---|---|
| iOS | AVPlayer | Yes | Yes | Yes (Info.plist audio) |
| macOS | AVPlayer | Yes | Yes | Yes |
| Android | ExoPlayer | Yes | Yes | Yes (foreground service) |
| Windows | platform video_player | Partial | Partial | TBD |
| Linux | platform video_player | Partial | Partial | TBD |
| Web | HTML5 + HLS.js | Yes (polyfilled) | Partial | n/a |
Architecture
Section titled “Architecture”+---------------------------------------------+| nTV Flutter Client (6 platforms) || - Library browser || - Video / audio player (chewie + video_player) || - IPTV M3U channel browser || - EPG viewer || - Progress sync engine |+------------------+--------------------------+ | | Hasura GraphQL + plugin REST |+------------------v--------------------------+| nSelf Backend (user-hosted) || || PostgreSQL <-- library schema || Hasura <-- GraphQL API + permissions || Auth <-- JWT issuance || Nginx <-- TLS + routing || || nTV Plugins: || streaming HLS/DASH segment server || stream-gateway stream URL routing || epg electronic program guide || tmdb metadata enrichment || media-processing encoding pipeline || torrent-manager BitTorrent client (free) || content-acquisition download orchestration (free) || subtitle-manager subtitle search (free) |+---------------------------------------------+The Flutter client speaks Hasura GraphQL for library data, watch state, and user preferences. Playback goes through the streaming plugin, which serves HLS segments from transcoded files stored in MinIO or a local media directory. Progress sync is a Hasura mutation sent every 10 seconds during playback.
ɳTV Plugin Bundle
Section titled “ɳTV Plugin Bundle”ɳTV requires the ɳTV bundle for all backend features. The bundle costs $0.99/mo or $9.99/yr as part of the ɳSelf Pro tier.
Paid plugins (require license key):
| Plugin | Purpose |
|---|---|
streaming | Library API, HLS/DASH streaming, progress sync |
stream-gateway | Stream URL routing and access control |
epg | Electronic Program Guide for live channels |
tmdb | TMDB metadata lookup and poster art |
media-processing | Server-side encoding pipeline |
recording | DVR recording from live streams |
Free plugins (no key needed):
| Plugin | Purpose |
|---|---|
torrent-manager | BitTorrent client for media acquisition |
content-acquisition | Automated download orchestration |
subtitle-manager | Subtitle search, download, and sync |
Quick Start
Section titled “Quick Start”# Backendnself init ntv-backend && cd ntv-backendnself license set nself_pro_xxxxx...nself plugin install streaming stream-gateway epg tmdbnself plugin install torrent-manager content-acquisition subtitle-managernself build && nself start
# Flutter appgit clone https://github.com/nself-org/ntv && cd ntvflutter pub getflutter runOn first launch, the Library screen prompts you to enter your backend URL. For local dev use http://localhost:8000. For a remote server use your full https:// URL.
Further Reading
Section titled “Further Reading”- Getting Started: step-by-step setup walkthrough
- Backend Setup: backend initialization and plugin installation reference
- ɳTV wiki: detailed developer documentation
- ɳTV bundle overview: full plugin and architecture details
- Bundles and pricing: ɳTV bundle pricing and tier information