ɳTV
ɳTV — ɳSelf documentation.
ɳ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
ɳ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)
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)
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
| 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
+---------------------------------------------+
| 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
ɳ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
# Backend
nself init ntv-backend && cd ntv-backend
nself license set nself_pro_xxxxx...
nself plugin install streaming stream-gateway epg tmdb
nself plugin install torrent-manager content-acquisition subtitle-manager
nself build && nself start
# Flutter app
git clone https://github.com/nself-org/ntv && cd ntv
flutter pub get
flutter run
On 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
- 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