Skip to content

Riscue/iptv-plus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPTV Plus

License

GitHub Downloads (all assets, latest release)

GitHub Release GitHub Activity

A modern IPTV player featuring advanced memory management (memory-leak-safe), seamless DVR functionality, and Smart TV compatibility with full TV remote and keyboard support.

Pause, rewind, and return to live broadcast at any time while watching your favorite channels.

Features

  • Hardware & Software HLS Support - Native HLS or HLS.js playback based on device codec capabilities
  • 180-Minute Continuous DVR - Live streams are recorded to disk via FFmpeg. Rewind up to 3 hours into the past
  • Smart TV D-Pad Navigation - Advanced matrix coordinate system for smooth navigation using keyboard arrow keys or TV remote control
  • VOD Filtering - Automatically filters out VOD content (.mp4, .mkv files and movie/cinema categories) to show only live TV channels
  • Concurrency Protection - Download lock architecture prevents playlist file conflicts when multiple users access simultaneously
  • Auto Heartbeat & Resource Saving - When user exits, FFmpeg process stops after 5 minutes of inactivity, saving bandwidth and system resources
  • Favorite Channels - Quick access slots 1-9 with long-press assignment for fast favorite management
  • Smart Watch History - Prioritizes most-watched channels and currently recording (DVR active) channels at the top
  • Debug Panel - Built-in debugging interface (Ctrl/Cmd + Shift + D) for keyboard event logging and console output

TV Remote & Keyboard Shortcuts

Home Page (Anasayfa)

PC Keyboard TV Remote Function
1-9 1-9 Quick jump to favorite channels
Arrow Keys D-Pad (↑↓←→) Navigation
Enter OK Select focused item
Escape Back Return to category / Clear search
A-Z - Auto-focus search box
- Yellow Add/Remove current channel from favorites
- Green Resume currently recording channel

Player (Oynatıcı)

PC Keyboard TV Remote Function
Arrow Left/Right D-Pad (←→) Seek 10s backward/forward (when UI hidden)
Arrow Up/Down D-Pad (↑↓) Navigate controls OR hide/show UI (up from top)
Enter OK Play/Pause OR execute planned seek (on progress bar)
Space Play/Pause Play/Pause
Escape Back Return to Home page
Page Up/Down Channel Up/Down Switch to next/previous channel
F Yellow Toggle Fullscreen
- Red Jump to 'LIVE' from rewound position
- Blue Toggle Channel List sidebar

Channel List (Kanal Listesi)

PC Keyboard TV Remote Function
Arrow Up/Down D-Pad (↑↓) Navigate channel list
Enter OK Switch to selected channel
Escape Back Close channel list

Debug Panel (All Pages)

PC Keyboard TV Remote Function
Ctrl/Cmd + Shift + D - Toggle debug panel (keyboard events & logs)

Technical Stack

  • Backend: Node.js + Express
  • Video Processing: FFmpeg (real-time .ts segmentation to buffer directory)
  • Frontend: Vanilla JavaScript, CSS3 Glassmorphism (TV-optimized large fonts and overlay priority system)
  • Security: Regex-protected PID validation for FFmpeg start/stop operations, zombie process cleanup

Installation

Running Locally (Native)

# Install dependencies
npm install

# Create .env file
echo "PLAYLIST_URL=https://playlist-url.m3u8" > .env

# Start server (FFmpeg must be installed on your system)
npm start

Open in browser: http://localhost:3000

Running with Docker (Recommended)

Docker image automatically installs FFmpeg, ensuring OS-independent operation.

# Create .env file
cat > .env << EOF
PLAYLIST_URL=https://your-playlist-url.m3u8
TZ=Europe/Istanbul
EOF

# Build and run
docker build -f docker/Dockerfile -t iptv-plus .
docker run -d \
  -p 3000:3000 \
  --env-file .env \
  -v $(pwd)/tmp:/tmp/iptv-buffer \
  --name iptv-plus \
  iptv-plus

Environment Variables

Variable Required Default Description
PLAYLIST_URL Yes - Your IPTV provider's M3U8 playlist URL
BUFFER_DIR No /tmp/iptv-buffer Directory where FFmpeg writes stream files
TZ No Europe/Istanbul Application timezone

Usage

  1. Watching: Select a category from the home page and start any channel
  2. Adding Favorites: Long-press (1 second) on any channel box with mouse or OK button on remote
  3. Using DVR: While in player, use remote left/right arrows or on-screen buttons to rewind and skip commercials
  4. Resource Saving: When you close the tab, orphaned buffer segments and FFmpeg recording processes are automatically detected and cleaned up

API Endpoints

Endpoint Method Description
/api/channels GET Get all channels with categories
/api/categories GET Get category list with counts
/api/channels/search GET Search channels by name
/api/channel/current GET Get current playing channel
/api/channel/change GET Change channel
/api/buffer/status GET Get recording status
/api/buffer/heartbeat GET Update activity heartbeat
/api/buffer/stop POST Stop recording
/api/build-info GET Get build version info

Known Bugs

  • Focus issue on TV: On initial launch and after exiting fullscreen, key mappings don't work until the user clicks somewhere on the screen to regain focus.
  • Media keys not working on TV: Hardware media keys (play, pause, etc.) are unresponsive on TV devices.
  • Codec support: Some video codecs are not supported, causing playback failures on certain channels.

License

MIT © Riscue

About

A web-based IPTV player with DVR functionality, HLS streaming support, and smart TV-compatible D-Pad navigation for watching live TV channels.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors