Skip to content

amantidesigns/BoomerTV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BoomerTV

A native tvOS app that turns M3U/M3U8 playlists into a traditional TV channel-surfing experience. Built for simplicity — designed so your parents (or anyone who misses the simplicity of cable TV) can just sit down and flip channels.

Why BoomerTV?

Modern streaming apps are overwhelming. Multiple menus, profiles, algorithms, and endless scrolling. BoomerTV strips all of that away. Power on your Apple TV, launch the app, and start flipping channels with the Siri Remote — just like the old days.

Features

  • Cable TV Feel — Swipe up/down to change channels instantly, just like a remote
  • 5-Channel Jump — Swipe left/right to skip 5 channels at a time
  • Pre-buffered Channels — Adjacent channels are pre-loaded for near-instant switching
  • YouTube TV-Style Overlay — Clean channel info with logo, name, and LIVE badge appears briefly on switch
  • Channel Guide — Press Menu to browse channels organized by category
  • M3U Playlist Support — Load any M3U/M3U8 playlist URL
  • Built-in Sample Channels — 15 free live channels included for immediate use
  • Background Audio — Audio continues during brief app interruptions

Architecture

BoomerTV/
├── BoomerTVApp.swift              # App entry point + audio session config
├── ContentView.swift              # Main TV view + Siri Remote input handling
├── Models/
│   └── ChannelModel.swift         # Channel, PlayerState, PlaylistConfig models
├── Views/
│   ├── VideoPlayerView.swift      # AVPlayerViewController wrapper
│   ├── ChannelOverlayView.swift   # Channel overlay + persistent logo bug
│   ├── ChannelGuideView.swift     # Category-grouped channel guide
│   └── SettingsView.swift         # Playlist URL configuration
├── ViewModels/
│   └── ChannelPlayerViewModel.swift  # State orchestrator (@MainActor)
└── Services/
    ├── M3UParser.swift            # M3U/M3U8 playlist parser
    └── PlayerService.swift        # 3-player AVPlayer pool manager

How It Works

3-Player Pool

PlayerService maintains a pool of 3 AVPlayer instances — previous, current, and next. When you switch channels, the adjacent player is promoted to current and starts playing immediately while a new player is created for the newly adjacent channel. This makes channel switching feel instant.

Stream Optimization

  • automaticallyWaitsToMinimizeStalling is disabled for fast startup
  • Forward buffer is kept small (2 seconds for current channel) to reduce initial load time
  • Adjacent channels use capped bitrates to save bandwidth
  • Stale stream detection auto-recovers frozen channels after 15 seconds

Siri Remote Controls

Action Control
Channel Up Swipe Up / D-pad Up
Channel Down Swipe Down / D-pad Down
Jump +5 Channels Swipe Right / D-pad Right
Jump -5 Channels Swipe Left / D-pad Left
Show Channel Info Press Select (click)
Open Channel Guide Press Menu
Close Guide Press Menu again
Open Settings Long-press Menu
Play / Pause Press Play/Pause

Setup

Requirements

  • tvOS 17.0+
  • Xcode 15.0+
  • Swift 5.9+
  • Apple TV 4K (recommended) or Apple TV HD

Build & Run

  1. Open BoomerTV.xcodeproj in Xcode
  2. Select your Apple TV (simulator or physical device) as the build target
  3. Set your Development Team in Signing & Capabilities
  4. Press Cmd+R to build and run

For physical Apple TV deployment, ensure your Mac and Apple TV are on the same network.

Custom Playlist

By default, BoomerTV loads 15 sample free live channels. To use your own M3U playlist:

  1. Long-press Menu on the Siri Remote to open Settings
  2. Enter your M3U/M3U8 playlist URL
  3. Tap Load Playlist

M3U Format

Standard M3U/M3U8 playlists are supported:

#EXTM3U
#EXTINF:-1 tvg-name="Channel Name" tvg-logo="https://logo.url/logo.png" group-title="News",Channel Name
https://stream.url/live.m3u8

Supported attributes: tvg-name, tvg-logo, group-title

Customization

  • Sample channels: Edit M3UParser.swiftsamplePlaylistContent
  • Buffer duration: Adjust preferredForwardBufferDuration in PlayerService.swift
  • Overlay duration: Adjust showOverlayBriefly(duration:) in ChannelPlayerViewModel.swift (default: 4 seconds)

License

MIT

About

Native tvOS app that turns M3U playlists into a traditional TV channel-surfing experience. Built for simplicity.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors