Live Streams

Monitor your streaming platform performance

System Overview

Real-time streaming statistics and performance metrics

0

Total Streams

Configured video streams

0

Active Streams

Currently broadcasting

0

Active Push Streams

Live RTMP connections

Loading...

System Uptime

Days since server start

0

Shoutcast Listeners

Active audio streams

0

Icecast Listeners

Active streaming clients

0

Total Viewers

All streaming viewers

0

Failed Streams

Streams with errors

0h

Total Stream Time

Combined streaming hours

0 MB/s

Total Bandwidth

Combined upload speed

System Performance

Real-time system resources and running processes

CPU

Loading...

0%

Memory

Loading...

0%

Storage

Loading...

0%

Upload

0 KB/s

Download

0 KB/s

Database Size

SQLite database

0 MB

Log File Size

All log files

0 MB

Active Processes

0 FFmpeg processes | 0 RTMP connections
Stream Type PID CPU % Memory Runtime Status

No active processes

Running

Server Status

RTMP Push Server

1935

Server Port

RTMP Ingest

0

Active Streams

Broadcasting now

0

Total Connections

Since server start

How to Use RTMP Push Streaming

Basic Setup

1
Server accepts any RTMP stream automatically
2
Use any unique stream key

OBS Studio Setup

Loading...
YOUR_UNIQUE_KEY Choose any unique identifier

Active RTMP Push Streams

Only showing currently live streams
Stream Key Status Client IP RTMP URL HLS URL Started Actions

Running

Server Status

Shoutcast DNAS v2

0

Total Listeners

Across all streams

0

Active Streams

Broadcasting now

0h

Server Uptime

Since last restart

Active Audio Streams

Live broadcasting streams
Name Status Listeners Peak Bitrate Current Track Preview

No active streams

Connect from BUTT to start broadcasting

Stream Configurations

Manage your audio streaming endpoints

Important Notice

Stream status will show as Offline if there is no active audio data, even if BUTT is connected. Make sure you are sending audio for the status to show as Live.

Loading configurations...

Running

Server Status

Icecast2 v2.4.4

0

Total Listeners

Across all streams

0

Active Sources

Broadcasting now

0h

Server Uptime

Since last restart

Server Configurations

Manage multiple Icecast server ports and settings

Name Port Hostname Max Clients Max Sources SSL Status Actions

No configurations

Click "Add Configuration" to create your first server config

Active Icecast Streams

Live broadcasting streams
Mountpoint Title Listeners Peak Bitrate Codec Preview

No active streams

Connect a source to start broadcasting

Stream Recordings

Record, manage, and playback your stream archives

--

Disk Usage

-- GB Available

--

Total Recordings

-- GB

0

Active Recordings

Currently recording

Loading recordings...

Radio Automation

Create automated radio stations with playlists, scheduling, and rotation rules

0

Total Stations

0

Now Playing

0

Total Tracks

0h

Total Duration

Loading stations...

System Settings

Configure server hostname, SSL certificates, and other system settings

License Management

Configure your WHMCS license key and server information

License Active

Your license is valid and active

Active
IP: -
Domain: -
Key: -
Your license key for this installation
This server's public IPv4 address is automatically detected and cannot be changed

Hostname Configuration

Configure the domain name for your IPTV platform

Domain name where your IPTV platform is hosted

Advanced Settings

Advanced configuration options for experienced users

Enable verbose logging for troubleshooting
Download individual log files, get all logs in a ZIP archive, or clear all logs to free up space
Automatically retry streams that fail or disconnect
Number of days to keep log files

System Update Management

Manage platform updates and backups

Click to select update package
Only .zip files are accepted
A backup will be created automatically before applying the update
Automatic Backups Enabled
A backup is created before each update
Loading backups...

Account Management

Manage your account session and logout

Account Information

Current logged in user details

Change Email

Update your account email address

Change Password

Update your account password for security

Session Management

End your current session securely

Logging out will end your current session and require you to login again.

User Manual

Complete guide to StreamDen IPTV Platform

1. Platform Overview

StreamDen IPTV Platform is a professional, enterprise-grade streaming solution designed for broadcasters, content creators, and organizations that need reliable live streaming infrastructure.

Core Capabilities

  • Multi-Protocol Input - Accept streams from RTSP cameras, HTTP/HTTPS sources, HLS playlists, SRT streams, and RTMP encoders
  • Universal HLS Output - All streams are converted to HLS format for maximum compatibility
  • SRT Output - Ultra-low latency output (~120ms) with encryption support
  • Live Transcoding - Real-time video transcoding with quality presets (4K, 1080p, 720p, etc.)
  • Watermark / Logo Overlay - Burn logos into video with configurable position, size, and opacity
  • RTMP Ingest - Receive live streams from OBS Studio, Wirecast, vMix, FFmpeg, and other encoders
  • Multi-Platform Restreaming - Simultaneously push to YouTube, Twitch, Facebook, Instagram, TikTok, and custom RTMP destinations
  • Shoutcast Radio - SHOUTcast v2 server with DJ connections and listener tracking
  • Icecast Audio - Full Icecast server with multi-port configurations and mountpoints
  • Radio Automation - 24/7 automated radio with playlists, scheduling, satellite sources, and crossfade
  • Recordings / DVR - Record streams for archiving, playback, and download
  • Backup & Restore - Export and import stream configurations

Supported Input Formats

ProtocolDescriptionExample URL
RTSPIP Cameras, DVRs, NVRsrtsp://192.168.1.100:554/stream
HTTP/HTTPSWeb streams, CDN sourceshttps://cdn.example.com/live.ts
HLSExisting HLS playlistshttps://example.com/stream.m3u8
SRTSecure Reliable Transportsrt://source.example.com:9000
RTMPLegacy RTMP sourcesrtmp://server.com/live/key

Output Format

All streams are output as HLS (HTTP Live Streaming) with the following specifications:

  • Segment Duration: 2 seconds (configurable)
  • Playlist Type: Event (live streaming)
  • Codec: H.264 video, AAC audio
  • Compatible with: All modern browsers, iOS, Android, Smart TVs, VLC, and media players
HLS is the most widely supported streaming format. It works natively in Safari and with HLS.js in Chrome, Firefox, and Edge.

2. Getting Started

Quick Start Guide

Follow these steps to get your first stream running in under 5 minutes:

1
Create Your First Stream

Go to Live Streams tab and click "+ New Stream"

2
Enter Stream Details

Give your stream a name and paste the source URL (RTSP, HTTP, HLS, etc.)

3
Start the Stream

Click the green Play button to start streaming

4
Copy the HLS URL

Click the Copy URL button and share the link with viewers

Navigation

The platform is organized into tabs in the left sidebar:

  • Dashboard - System overview and statistics
  • Live Streams - Manage video streams from various sources
  • RTMP Push - Receive streams from OBS/encoders
  • Shoutcast Audio - Manage Shoutcast radio stations
  • Icecast Audio - Manage Icecast audio streams
  • Recordings - Record and archive streams
  • Radio Automation - Automated radio playlists and scheduling
  • Settings - Platform configuration
  • Account - Account management and security
  • Manual - This documentation

Stream URL Structure

All your streams are available at predictable URLs:

# Standard Stream https://your-domain.com/streams/stream_{id}/playlist.m3u8 # RTMP Push Stream https://your-domain.com/rtmp-hls/{stream-key}/playlist.m3u8
Replace your-domain.com with your actual server hostname and {id} or {stream-key} with the appropriate value.

3. Dashboard

The Dashboard provides a comprehensive real-time overview of your streaming infrastructure with live-updating statistics and performance metrics.

Statistics Cards

CardDescriptionRefresh Rate
Total StreamsTotal number of configured streams in the system5 seconds
Active StreamsStreams currently running and serving content5 seconds
RTMP PushActive incoming RTMP connections from encoders5 seconds
Radio StationsNumber of Shoutcast stations online5 seconds
Total BandwidthCurrent combined outgoing bandwidth for all streams2 seconds

System Performance Gauges

  • CPU Usage - Server processor utilization. High values (>80%) may indicate need for optimization or fewer concurrent streams
  • Memory Usage - RAM consumption. Each stream uses approximately 100-500MB depending on quality
  • Upload Speed - Current outgoing network bandwidth (all streams combined)
  • Download Speed - Incoming bandwidth from source streams
  • System Uptime - Time since last server restart

Quick Actions

From the dashboard, you can quickly:

  • View streams that need attention (errors or stopped unexpectedly)
  • Monitor overall system health
  • Identify bandwidth bottlenecks
If CPU usage consistently exceeds 90%, consider reducing the number of transcoding streams or lowering quality settings.

4. Live Streams

The Live Streams section is where you manage video streams from various input sources. Each stream takes a source URL and converts it to HLS format for universal playback.

View Modes

You can switch between two display modes using the toggle buttons in the top-right corner:

  • Grid View - Card layout with full details, statistics, and SRT info per stream
  • List View - Compact horizontal rows for quick overview of many streams

Your view preference is saved automatically and persists across sessions.

Creating a Stream

  1. Click the "+ New Stream" button
  2. Enter a Stream Name (e.g., "News Channel", "Camera 1")
  3. Enter the Source URL - supported formats:
    • rtsp://username:password@192.168.1.100:554/stream - RTSP cameras with authentication
    • rtsp://192.168.1.100:554/stream - RTSP without authentication
    • http:// or https:// - HTTP/HTTPS streams
    • https://example.com/stream.m3u8 - HLS playlists
    • srt://source.example.com:9000 - SRT streams
    • rtmp://server.com/live/key - RTMP sources
  4. (Optional) Enable transcoding for quality adjustment
  5. (Optional) Add RTMP Push URL to restream externally
  6. Click "Create Stream"

Stream Controls

ButtonActionDescription
StartBegin streaming - converts source to HLS
StopStop the stream and FFmpeg process
EditModify stream name, URL, or settings
DeleteRemove stream permanently
Copy URLCopy HLS output URL to clipboard
PreviewOpen video player preview
RestartRestart stream with current settings (running streams only)
LogoAdd watermark/logo overlay (see Chapter 6)
RestreamMulti-platform restreaming (see Chapter 9)

Live Stream Statistics

When a stream is running, the card displays real-time statistics:

StatisticDescription
Running TimeHow long the stream has been active
BitrateCurrent video bitrate (e.g., 4500 kbps)
ViewersNumber of active HLS viewers
ResolutionVideo resolution (e.g., 1920x1080)
Video CodecActive video codec (e.g., h264)
FPSFrames per second
AudioAudio codec or "No Audio" if missing
CPUCPU usage of this stream's FFmpeg process
MemoryMemory usage of this stream's FFmpeg process
Stream HealthOverall health indicator (Healthy/Offline)

Stream Status Indicators

  • Running - Stream is active and serving content
  • Stopped - Stream is configured but not running
  • Error - Stream failed (check source URL or logs)
  • Starting - Stream is initializing FFmpeg

Bulk Operations

  • Start All - Start all stopped streams simultaneously
  • Stop All - Stop all running streams
  • Refresh - Reload stream list from database

Output URL Format

https://your-domain.com/streams/stream_{id}/playlist.m3u8

Where {id} is the stream's numeric ID shown in the interface.

Testing Your Stream

You can test HLS streams with:

  • Built-in Player - Click the preview button in the stream row
  • VLC Media Player - Media → Open Network Stream → paste URL
  • FFplay - ffplay "https://your-domain/streams/stream_1/playlist.m3u8"
  • Web Browser - Safari plays natively; Chrome/Firefox with HLS.js
Streams persist across server restarts. Any stream with "running" status will automatically restart when the platform starts.

5. SRT Output (Ultra-Low Latency)

SRT (Secure Reliable Transport) output enables sub-second latency streaming (~120ms), far below HLS latency (10-30s). Ideal for live production, contribution feeds, and real-time monitoring.

Enabling SRT Output

  1. Create or edit a stream in Live Streams
  2. Check "Enable SRT Output (Ultra-Low Latency)"
  3. Configure SRT mode and settings
  4. Save and start the stream

SRT Modes

ModeHow It WorksBest For
ListenerServer waits for clients to connect. Clients pull the stream using the SRT URL.Multiple viewers, VLC/OBS/FFplay playback
CallerServer pushes the stream to an external SRT destination.Contribution feeds, point-to-point delivery

Configuration Options

SettingRangeDefaultDescription
ModeListener / CallerListenerConnection direction
Destination URL--External SRT server (Caller mode only)
Latency20-8000 ms120 msLower = less delay, higher = more reliability
Passphrase10-79 charsNoneOptional AES encryption

SRT URL Format (Listener Mode)

srt://your-domain.com:PORT # Port is automatically assigned: 9000 + (stream_id - 1) # Stream 1 = port 9000, Stream 2 = port 9001, etc.

Connecting with Players

PlayerHow to Connect
VLCMedia → Open Network Stream → srt://server:port
OBS StudioMedia Source → Input: srt://server:port
FFplayffplay "srt://server:port"
mpvmpv "srt://server:port"

Port Requirements

PortsProtocolDirectionPurpose
9000+UDPInboundSRT listener connections (one port per stream)
SRT output runs in parallel with HLS. Both outputs are active simultaneously when SRT is enabled.
Ensure SRT ports (9000+) are open in your firewall for UDP traffic: ufw allow 9000:9100/udp

6. Watermark / Logo Overlay

Add a logo or watermark overlay to your streams for branding. The watermark is burned into the video using FFmpeg's overlay filter.

Adding a Watermark

  1. Find your stream in Live Streams
  2. Click the "Logo" button (purple icon)
  3. Upload an image (PNG, JPG, GIF, or WebP - max 5MB)
  4. Configure position, size, and opacity
  5. Check "Enable Watermark"
  6. Click "Save Settings"
  7. Restart the stream to apply changes

Watermark Settings

SettingRangeDefaultDescription
ImagePNG, JPG, GIF, WebP-Logo file (max 5MB). PNG with transparency recommended.
Position5 positionsTop-RightWhere the logo appears on the video
Size5% - 50%15%Logo size relative to video width
Opacity10% - 100%80%Transparency level (100% = fully opaque)
Margin0 - 100 px20 pxDistance from the edge of the video

Available Positions

Top-LeftTop-Right
Center
Bottom-LeftBottom-Right

Best Practices

  • Use PNG with transparent background for the cleanest look
  • Keep size at 10-20% to avoid obstructing content
  • Use 60-80% opacity for a subtle, professional appearance
  • Bottom-right is the most common placement for broadcast logos
Watermark overlay requires video transcoding, which significantly increases CPU usage. Monitor your CPU in the Dashboard when using watermarks.
Changes to watermark settings require a stream restart to take effect. Click the "Restart" button after saving.

7. Transcoding & Quality

Transcoding allows you to convert video from one format/quality to another. By default, streams are copied without transcoding (passthrough) which is faster and uses less CPU.

When to Use Transcoding

  • Reduce bandwidth - Lower the bitrate for limited connections
  • Change resolution - Scale 4K to 1080p or 720p
  • Fix compatibility - Convert non-standard codecs to H.264/AAC
  • Normalize frame rate - Convert variable FPS to constant

Enabling Transcoding

  1. When creating or editing a stream, check "Enable Transcoding"
  2. Choose a Quality Preset or configure custom settings
  3. The transcoding options panel will appear

Quality Presets

PresetResolutionVideo BitrateFPSCPU Usage
SourceOriginalOriginalOriginalNone (copy)
4K Ultra HD3840x216015,000 kbps30Very High
1080p 60fps1920x10808,000 kbps60High
1080p Full HD1920x10805,000 kbps30Medium-High
720p HD1280x7203,000 kbps30Medium
480p SD854x4801,500 kbps30Low
360p Low640x360800 kbps30Very Low
CustomUser-definedUser-definedUser-definedVaries

Custom Settings

When selecting "Custom" preset, you can configure:

  • Width/Height - Output resolution in pixels (e.g., 1920x1080)
  • Video Bitrate - Target bitrate in kbps (higher = better quality, more bandwidth)
  • Frame Rate - Frames per second (15-60 fps)
  • Audio Bitrate - Audio quality in kbps (64-320 kbps)

Bandwidth Estimation

QualityBandwidth per StreamMonthly Data (24/7)
4K~15 Mbps~4.9 TB
1080p~5 Mbps~1.6 TB
720p~3 Mbps~970 GB
480p~1.5 Mbps~485 GB
360p~0.8 Mbps~260 GB
Passthrough (no transcoding) is recommended when your source is already in a compatible format. It uses minimal CPU and preserves original quality.
Each transcoding stream uses significant CPU. A typical server can handle 2-4 simultaneous 1080p transcodes. Monitor your CPU usage in the Dashboard.

8. RTMP Push (Receive)

RTMP Push allows you to receive live streams from external encoders like OBS Studio, Wirecast, vMix, or any software that supports RTMP output. This is the reverse of typical streaming - instead of pulling a source, the encoder pushes to your server.

How It Works

1
Create RTMP Endpoint

Click "+ New RTMP Stream" in the RTMP Push tab

2
Get Connection Details

Copy the Server URL and Stream Key

3
Configure Encoder

Paste the details into OBS/Wirecast/vMix

4
Start Streaming

The HLS output becomes available automatically

OBS Studio Setup

  1. Open OBS Studio
  2. Go to Settings → Stream
  3. Set Service to "Custom..."
  4. Server: rtmp://your-domain.com:1935/live/
  5. Stream Key: Your unique stream key (e.g., mystream)
  6. Click OK to save
  7. Click "Start Streaming" in OBS main window

Wirecast Setup

  1. Open Wirecast → Output → Output Settings
  2. Add a new RTMP destination
  3. Address: rtmp://your-domain.com:1935/live/streamkey
  4. Click "Start/Stop Broadcasting"

FFmpeg Command Line

ffmpeg -re -i input.mp4 -c copy -f flv rtmp://your-domain.com:1935/live/streamkey

Output URL Format

https://your-domain.com/rtmp-hls/{stream-key}/playlist.m3u8

Port Requirements

PortProtocolDirectionPurpose
1935TCPInboundRTMP connections from encoders
Ensure port 1935 is open in your firewall (UFW/iptables) for incoming RTMP connections.
Stream keys are case-sensitive. Use lowercase letters and numbers without spaces for best compatibility.

9. Multi-Platform Restreaming

Broadcast your streams to multiple platforms simultaneously. The built-in Restream Manager lets you add multiple destinations per stream, each with its own enable/disable toggle and status tracking.

Opening the Restream Manager

  1. Find your stream in Live Streams
  2. Click the "Restream" button (orange icon)
  3. The Multi-Restream modal opens with your existing destinations

Adding a Destination

  1. Click one of the platform quick-add buttons (YouTube, Twitch, Facebook, Instagram, TikTok, or Custom RTMP)
  2. Enter a Destination Name (e.g., "My YouTube Channel")
  3. Enter the RTMP Server URL (auto-filled for known platforms)
  4. Enter your Stream Key
  5. Click "Add Destination"

Supported Platforms

PlatformRTMP URLWhere to Get Stream Key
YouTubertmp://a.rtmp.youtube.com/live2/YouTube Studio → Go Live
Twitchrtmp://live.twitch.tv/app/Dashboard → Settings → Stream
Facebookrtmps://live-api-s.facebook.com:443/rtmp/Creator Studio → Live Dashboard
Instagramrtmps://live-upload.instagram.com:443/rtmp/Instagram Creator Studio
TikTokrtmp://push.tiktok.com/live/TikTok Live Studio
CustomAny RTMP/RTMPS URLYour streaming server admin panel

Managing Destinations

  • Enable/Disable - Toggle individual destinations on/off without deleting them
  • Status tracking - Each destination shows Live, Ready, or Error status
  • Error messages - Detailed error info if a destination fails
  • Delete - Remove a destination permanently

The Restream button on each stream card shows a badge with the number of active destinations.

Platform-Specific Setup

YouTube Live
  1. Go to YouTube Studio → Go Live
  2. Copy the Stream URL and Stream Key
  3. Paste your destination RTMP URL (from YouTube/Twitch/etc.)
  4. Save and start the stream

Platform-Specific Settings

YouTube Live
  1. Go to YouTube Studio → Go Live
  2. Copy the Stream URL and Stream Key
  3. Combine them: rtmp://a.rtmp.youtube.com/live2/YOUR-STREAM-KEY
  4. Paste into the RTMP Push URL field
Twitch
  1. Go to Twitch Dashboard → Settings → Stream
  2. Copy your Primary Stream Key
  3. Use: rtmp://live.twitch.tv/app/YOUR-STREAM-KEY
Facebook Live
  1. Go to Facebook Creator Studio → Live Dashboard
  2. Copy the Server URL and Stream Key
  3. Combine: rtmps://live-api-s.facebook.com:443/rtmp/YOUR-STREAM-KEY
Custom RTMP Server
rtmp://your-server.com:1935/live/streamkey
Each destination uses the full stream bitrate in upload bandwidth. 3 destinations at 5 Mbps = 15 Mbps upload required.
Keep your stream keys secret! Use the eye icon to toggle key visibility. Anyone with your stream key can broadcast to your channel.

10. Shoutcast Radio

Create and manage professional internet radio stations using Shoutcast/Icecast technology. Each station runs independently and can have its own DJ connections and listeners.

Creating a Radio Station

  1. Go to the Shoutcast tab
  2. Click "+ New Station"
  3. Configure station settings:
    • Station Name - Display name for listeners
    • Port - Unique port (8000, 8010, 8020, etc.)
    • DJ Password - Password for broadcasters to connect
    • Admin Password - Password for administration
    • Genre - Music genre (Pop, Rock, Jazz, etc.)
    • Bitrate - Audio quality (64, 128, 192, 256, 320 kbps)
  4. Click "Create Station"

Bitrate Recommendations

BitrateQualityBest ForBandwidth/Listener
64 kbpsVoice/TalkPodcasts, Talk shows~28 MB/hour
128 kbpsStandardMost music genres~56 MB/hour
192 kbpsHighMusic enthusiasts~84 MB/hour
256 kbpsVery HighHi-fi audio~112 MB/hour
320 kbpsMaximumProfessional broadcast~140 MB/hour

Connecting with Broadcasting Software

BUTT (Broadcast Using This Tool)
  1. Download BUTT from danielnoethen.de/butt
  2. Settings → Main → Add Server
  3. Type: Icecast
  4. Address: your-domain.com
  5. Port: Your station port
  6. Password: Your DJ password
  7. Mount: /stream
  8. Click "Play" to start broadcasting
SAM Broadcaster
  1. Encoders → Add → Shoutcast
  2. Server IP: your-domain.com
  3. Port: Your station port
  4. Password: Your DJ password
  5. Enable encoder to start

Listener URLs

# Direct stream (compatible with most players) http://your-domain.com:PORT/stream # M3U playlist (for web/mobile apps) http://your-domain.com:PORT/stream.m3u # Status page http://your-domain.com:PORT/status.xsl

Embedding in Websites

<audio controls autoplay> <source src="http://your-domain.com:PORT/stream" type="audio/mpeg"> </audio>
Each station requires its own unique port. Common ports are 8000, 8010, 8020, etc.

11. Icecast Audio Streaming

Icecast is an open-source audio streaming server. The platform includes a full Icecast management interface with multi-port configurations, mountpoints, and live statistics.

Server Overview

The Icecast tab shows four status cards:

  • Server Status - Running/Stopped indicator
  • Total Listeners - Current listeners across all mountpoints
  • Active Sources - Number of DJs/sources currently broadcasting
  • Server Uptime - Time since last restart

Creating a Configuration

  1. Go to the Icecast Audio tab
  2. Click "Add Configuration"
  3. Fill in the basic settings:
    • Configuration Name - Descriptive name (e.g., "Main Server")
    • Port - Unique port number (8010-8050)
    • Source Password - Password for DJs to connect
    • Admin Password - Password for administration
    • Default Mountpoint - Stream path (e.g., /stream.mp3)
  4. Click "Save Configuration"
  5. Click "Apply & Restart Icecast" to activate

Advanced Options

SettingDefaultDescription
HostnamelocalhostServer hostname for metadata
Admin UsernameadminAdmin panel login
Relay Passwordrelay2025Password for relay servers
Max Clients100Maximum simultaneous listeners
Max Sources10Maximum DJ connections
Burst Size65535 bytesInitial data burst to new listeners
Bind Address0.0.0.0Network interface to bind to

Connecting with BUTT

  1. Download BUTT from danielnoethen.de/butt
  2. Settings → Main → Add Server
  3. Type: Icecast
  4. Address: your-domain.com
  5. Port: Your configuration port
  6. Password: Your source password
  7. Mount: Your mountpoint (e.g., /stream.mp3)

Listener URLs

# Direct stream http://your-domain.com:PORT/mountpoint # Example http://your-domain.com:8010/stream.mp3

Active Streams Table

The Active Icecast Streams section shows all currently broadcasting sources with:

  • Mountpoint name
  • Stream title (from metadata)
  • Current and peak listeners
  • Bitrate and codec
  • Preview button for quick listening
Each Icecast configuration runs on its own port. You can run multiple configurations simultaneously for different stations.
Remember to open Icecast ports in your firewall: ufw allow 8010:8050/tcp

12. Radio Automation

Radio Automation enables 24/7 unattended broadcasting with playlists, scheduling, and Auto DJ functionality. Perfect for running a radio station without constant manual intervention.

Key Features

  • Playlist Management - Create unlimited playlists for different shows/times
  • Scheduling - Schedule playlists for specific days and times
  • Auto DJ - Automatic track selection and playback
  • Crossfade - Smooth transitions between tracks (configurable duration)
  • Shuffle - Random track order within playlists
  • Intro/Outro - Station jingles between tracks

Creating a Playlist

  1. Go to the Radio Automation tab
  2. Click "+ Create Playlist"
  3. Enter playlist name (e.g., "Morning Show", "Jazz Nights")
  4. Click "Add Tracks" to upload or select audio files
  5. Drag and drop to reorder tracks
  6. Save the playlist

Supported Audio Formats

  • MP3 (.mp3) - Most common, recommended
  • AAC (.aac, .m4a) - Better quality at same bitrate
  • OGG Vorbis (.ogg) - Open format
  • FLAC (.flac) - Lossless audio
  • WAV (.wav) - Uncompressed audio

Auto DJ Settings

  • Crossfade Duration - Overlap time between tracks (0-10 seconds)
  • Repeat Mode - Loop playlist when finished
  • Shuffle Mode - Randomize track order
  • Priority Queue - Insert urgent tracks immediately

Scheduling Shows

  1. Go to Schedule section
  2. Click on a time slot in the calendar
  3. Select a playlist to assign
  4. Set repeat options (daily, weekly, one-time)
  5. Save the schedule

Satellite / External Sources

The Satellite sub-tab allows you to integrate external live streams as radio sources:

  • Add external HTTP, HTTPS, RTSP, RTMP, HLS, Icecast, or Shoutcast streams as satellite sources
  • Schedule satellite feeds at specific times (e.g., news bulletins, syndicated shows)
  • Mix satellite sources with local playlists for seamless transitions

Sub-Tabs

Radio Automation is organized into sub-tabs:

  • Playlists - Manage playlists and tracks
  • Schedule - Weekly schedule calendar
  • Media Library - Browse and manage all uploaded audio files
  • Categories - Organize content by genre or type
  • Satellite - External live stream sources
Auto DJ will automatically fill gaps between scheduled shows with your default playlist.

13. Recordings / DVR

Record live streams for archiving, playback, and download. The Recordings tab provides a full DVR system with storage management.

Starting a Recording

  1. Go to the Recordings tab
  2. Click "New Recording"
  3. Select the stream to record
  4. Choose recording format and settings
  5. Click "Start Recording"

Storage Dashboard

Three status cards show your recording overview:

CardDescription
Disk UsagePercentage of disk space used, with available GB shown
Total RecordingsNumber of recordings and total size
Active RecordingsCurrently recording streams count

Managing Recordings

  • Search - Search recordings by name
  • Filter - Filter by status: All, Completed, Active, Failed
  • Playback - Play recordings directly in the browser
  • Download - Download recording files to your computer
  • Delete - Remove recordings to free disk space
  • Thumbnails - Auto-generated preview thumbnails

Storage Considerations

Quality~Storage per Hour
1080p (5 Mbps)~2.25 GB
720p (3 Mbps)~1.35 GB
480p (1.5 Mbps)~675 MB
Audio only (128 kbps)~56 MB
Monitor disk usage regularly. Recording 24/7 at 1080p uses approximately 54 GB per day per stream.
Ensure sufficient disk space before starting recordings. The system will stop recording if disk space runs out.

14. Video Player & Preview

The built-in video player allows you to preview streams directly in the CMS interface. It uses HLS.js for broad browser compatibility.

Using the Preview Player

  1. Find your stream in the Live Streams list
  2. Click the Preview button (play icon)
  3. The video player modal will open
  4. Click play or wait for auto-play

Player Controls

ControlDescription
Play/PauseStart or pause playback
VolumeAdjust audio level (0-100%)
FullscreenEnter/exit fullscreen mode
LiveJump to live edge of stream

Embedding Streams on External Websites

Use this code to embed your HLS stream on any website:

<!-- Include HLS.js library --> <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> <video id="video" controls style="width:100%; max-width:800px;"></video> <script> var video = document.getElementById('video'); var hls = new Hls(); hls.loadSource('https://your-domain.com/streams/stream_1/playlist.m3u8'); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED, function() { video.play(); }); </script>

Testing with External Players

  • VLC - Media → Open Network Stream → paste HLS URL
  • FFplay - ffplay "https://domain/streams/stream_1/playlist.m3u8"
  • mpv - mpv "https://domain/streams/stream_1/playlist.m3u8"
Safari plays HLS natively. Chrome, Firefox, and Edge require HLS.js for playback.

15. Backup & Restore

Backup and restore your stream configurations to protect against data loss or migrate to a new server.

Backing Up Streams

  1. Go to Live Streams tab
  2. Click the "Backup Streams" button in the toolbar
  3. A JSON file will download with all stream configurations
  4. Store this file safely for future use

What Gets Backed Up

  • Stream names and source URLs
  • Transcoding settings per stream
  • RTMP push URLs
  • SRT output settings
  • Watermark configurations
  • Restream destinations

Restoring Streams

  1. Go to Live Streams tab
  2. Click the "Restore Streams" button
  3. Select your backup JSON file
  4. Review the backup info (stream count, version)
  5. Confirm the restore

Manual Backup (Database)

For a complete system backup, also back up these files:

# SQLite database (all configurations) cp iptv.db iptv.db.backup # Environment configuration cp .env .env.backup # SSL certificates (if using custom) cp -r ssl/ ssl.backup/ # Watermark images cp -r watermarks/ watermarks.backup/
Schedule regular backups, especially before updates or server migrations. The backup file is small (a few KB) and easy to store.

16. Settings & Configuration

Configure your streaming platform settings, manage licenses, and view system information.

Server Configuration

  • Hostname - Your server's domain name (e.g., stream.example.com)
  • HTTP Port - Web server port (default: 3000)
  • RTMP Port - RTMP server port (default: 1935)

SSL/TLS Configuration

HTTPS is required for secure streaming and is mandatory for embedding on HTTPS websites.

  • Let's Encrypt - Automatic free SSL certificate generation
  • Custom Certificate - Upload your own SSL certificate and key

License Management

SettingDescription
License KeyYour activation key
StatusActive, Expired, or Trial
ExpirationLicense expiration date
Max StreamsMaximum allowed concurrent streams

System Options

  • Debug Mode - Enable detailed logging for troubleshooting
  • Auto Restart - Automatically restart failed streams
  • Log Retention - Number of days to keep log files
  • HLS Segment Duration - Length of each HLS segment (default: 2 seconds)
  • HLS Playlist Size - Number of segments in playlist (default: 5)

Backup & Restore

  • Export Configuration - Download settings as JSON
  • Import Configuration - Restore settings from backup
  • Database Backup - Export stream configurations
Changes to server configuration may require a platform restart to take effect.

17. Account Management

Manage your account credentials and session security from the Account tab.

Account Information

The top section shows your current logged-in username and email address.

Change Email

  1. Go to the Account tab
  2. Under "Change Email", enter your new email address
  3. Enter your current password to confirm the change
  4. Click "Update Email"

Change Password

  1. Go to the Account tab
  2. Under "Change Password", enter your current password
  3. Enter your new password (minimum 6 characters)
  4. Confirm the new password
  5. Click "Update Password"

Logout

Click the "Logout" button in the Session Management section to end your current session. You will be redirected to the login page.

Use a strong password with at least 8 characters, including numbers and special characters, for better security.
If you forget your password, you will need server access to reset it via the database.

18. SSL Certificate

SSL certificates enable HTTPS for secure streaming. This is required for embedding streams on HTTPS websites and is recommended for all production deployments.

Why SSL is Important

  • Security - Encrypts data between viewers and server
  • Mixed Content - HTTPS pages cannot load HTTP streams
  • Browser Trust - Modern browsers warn about non-HTTPS sites
  • SEO - Search engines prefer HTTPS sites

Option 1: Let's Encrypt (Recommended)

  1. Go to Settings → SSL
  2. Enter your domain name
  3. Click "Generate Certificate"
  4. Wait for automatic verification and certificate generation
  5. Certificate auto-renews every 60 days

Option 2: Custom Certificate

  1. Obtain SSL certificate from your CA (DigiCert, Comodo, etc.)
  2. Go to Settings → SSL → Custom Certificate
  3. Upload your certificate file (.crt or .pem)
  4. Upload your private key file (.key)
  5. Click "Install Certificate"

Requirements for Let's Encrypt

  • Domain must point to this server (DNS A record)
  • Port 80 must be accessible from internet
  • No firewall blocking HTTP validation

Troubleshooting SSL

IssueSolution
Certificate generation failsCheck DNS points to server, port 80 is open
Mixed content warningsUpdate all stream URLs to use HTTPS
Certificate expiredRegenerate using Let's Encrypt or upload new certificate
Never share your private key file. Keep it secure and backed up safely.

19. API Reference

The platform provides a RESTful API for programmatic control of streams and configuration.

Base URL

https://your-domain.com/api

Stream Endpoints

MethodEndpointDescription
GET/api/streamsList all streams
GET/api/streams/:idGet stream details
POST/api/streamsCreate new stream
PUT/api/streams/:idUpdate stream
DELETE/api/streams/:idDelete stream
POST/api/streams/:id/startStart stream
POST/api/streams/:id/stopStop stream

Example: List All Streams

curl -X GET https://your-domain.com/api/streams

Example: Create Stream

curl -X POST https://your-domain.com/api/streams \ -H "Content-Type: application/json" \ -d '{ "name": "My Stream", "input_url": "rtsp://camera.local/stream", "rtmp_url": "" }'

Example: Start Stream

curl -X POST https://your-domain.com/api/streams/1/start

Example: Stop Stream

curl -X POST https://your-domain.com/api/streams/1/stop

System Endpoints

MethodEndpointDescription
GET/api/statsSystem statistics (CPU, memory, bandwidth)
GET/api/healthHealth check endpoint

Response Format

All responses are JSON with the following structure:

{ "success": true, "data": { ... }, "message": "Operation completed" }
API responses include detailed error messages on failure to help with debugging.

20. Troubleshooting

Stream Won't Start

SymptomPossible CauseSolution
Immediate errorInvalid source URLVerify URL format and accessibility
Timeout errorSource unreachableCheck network, firewall, VPN requirements
"FFmpeg not found"FFmpeg not installedInstall FFmpeg: apt install ffmpeg
Authentication errorWrong credentialsCheck username/password in RTSP URL
Codec errorUnsupported codecEnable transcoding to convert to H.264

RTMP Connection Failed

IssueCheckFix
Connection refusedPort 1935 blockedufw allow 1935/tcp
Stream key errorKey mismatchVerify exact stream key in encoder
TimeoutNetwork pathTest with telnet domain 1935
"Server not found"DNS/hostnameUse IP address instead of domain

High CPU Usage

  • Too many transcoding streams - Disable transcoding where not needed
  • High resolution output - Lower quality preset (720p instead of 1080p)
  • Complex source - Some codecs are more CPU-intensive to decode
  • Insufficient hardware - Consider upgrading server or using GPU encoding

CPU guidelines per stream:

  • Passthrough (no transcoding): ~1-2% CPU
  • 720p transcoding: ~15-25% CPU
  • 1080p transcoding: ~30-50% CPU
  • 4K transcoding: ~80-100% CPU

Stream Buffering / Playback Issues

  • Check source stability - Test source URL directly with VLC
  • Network bandwidth - Ensure upload > total stream bitrate
  • HLS latency - Normal latency is 10-30 seconds for HLS
  • Player issues - Try different player (VLC, FFplay)

Audio/Video Sync Issues

  • Enable transcoding and let FFmpeg re-sync A/V
  • Check if source has stable frame rate
  • Try different quality preset

SSL/HTTPS Problems

  • Certificate not generating - Check DNS points to server, port 80 open
  • Mixed content - All resources must use HTTPS
  • Certificate expired - Regenerate or renew certificate

Useful Diagnostic Commands

# Check FFmpeg version and capabilities ffmpeg -version # Test source URL accessibility ffprobe "rtsp://source-url" -v error # Check platform status pm2 status # View real-time logs pm2 logs iptv-platform --lines 100 # Check port availability netstat -tlnp | grep -E "1935|3000" # Check disk space (for HLS segments) df -h # Check memory usage free -m # Restart the platform pm2 restart iptv-platform # Clear HLS segments (if disk full) rm -rf /home/develop/stream/streams/*/

Log File Locations

LogLocationContains
Application Loglogs/app.logGeneral platform activity
Error Loglogs/error.logErrors and exceptions
Debug Loglogs/debug.logDetailed debugging info
PM2 Logs~/.pm2/logs/Process manager logs
Enable Debug Mode in Settings for more detailed logging when troubleshooting complex issues.

21. FAQ

Q: How many streams can I run simultaneously?

A: It depends on your server resources and whether transcoding is enabled. A typical 4-core server can handle:

  • 20-50 passthrough streams (no transcoding)
  • 4-8 transcoding streams at 720p
  • 2-4 transcoding streams at 1080p

Q: What is the latency of HLS streams?

A: Standard HLS has 10-30 seconds of latency. This is normal for HLS due to segment buffering. For lower latency, consider:

  • Reducing segment duration (but may affect stability)
  • Using Low-Latency HLS (LL-HLS) if supported

Q: Can I stream to multiple platforms at once?

A: Yes! Create multiple streams with the same source URL, each pushing to a different RTMP destination (YouTube, Twitch, Facebook, etc.).

Q: Do streams auto-restart after server reboot?

A: Yes. Streams with "running" status in the database are automatically restarted when the platform starts. PM2 ensures the platform itself restarts on reboot.

Q: What ports need to be open?

A: Required ports:

  • 80/443 - HTTP/HTTPS for web interface and HLS
  • 1935 - RTMP ingest (if using RTMP Push)
  • 8000+ - Shoutcast/Icecast radio (each station needs its own port)

Q: How do I reduce bandwidth usage?

A: Options to reduce bandwidth:

  • Enable transcoding and choose lower quality preset
  • Reduce video bitrate in custom settings
  • Lower resolution (720p uses ~40% less than 1080p)

Q: Why does my stream show "Error" status?

A: Common causes:

  • Source URL is offline or incorrect
  • Network connectivity issues
  • Unsupported codec (enable transcoding)
  • RTSP authentication failed

Check Settings → Logs for detailed error messages.

Q: Can I use IP cameras as sources?

A: Yes! Most IP cameras support RTSP. Common URL formats:

  • Hikvision: rtsp://user:pass@IP:554/Streaming/Channels/101
  • Dahua: rtsp://user:pass@IP:554/cam/realmonitor?channel=1&subtype=0
  • Generic: rtsp://user:pass@IP:554/stream

Q: How do I backup my configuration?

A: Backup these files:

  • iptv.db - SQLite database with all streams
  • .env - Environment configuration
  • ssl/ - SSL certificates (if using custom)

Q: What is the difference between passthrough and transcoding?

A:

  • Passthrough: Copies video/audio without changes. Fast, low CPU, preserves quality.
  • Transcoding: Converts video to different format/quality. Higher CPU, but allows quality adjustment.

Use passthrough when possible. Only transcode if you need to change quality or fix compatibility.

Q: What is SRT and when should I use it?

A: SRT (Secure Reliable Transport) provides ultra-low latency (~120ms vs 10-30s for HLS). Use it when:

  • You need real-time monitoring (security cameras, live production)
  • You're feeding video to OBS/vMix for live production
  • Latency matters more than wide compatibility

SRT runs in parallel with HLS, so you get both low-latency and wide-compatibility outputs.

Q: Does watermark/logo use more CPU?

A: Yes. Watermark overlay requires video transcoding, which adds significant CPU load. A stream with watermark uses approximately the same CPU as a transcoding stream (15-50% depending on resolution).

Q: Can I restream to more than one platform at once?

A: Yes! Click the "Restream" button on any stream to open the Multi-Restream Manager. You can add multiple destinations (YouTube, Twitch, Facebook, Instagram, TikTok, Custom RTMP) and enable/disable them individually.

Q: What is the difference between Shoutcast and Icecast?

A: Both are audio streaming servers:

  • Shoutcast: Proprietary protocol, widely compatible, uses SHOUTcast v2 server
  • Icecast: Open-source, supports multiple mountpoints per port, Ogg Vorbis and MP3

Both work with BUTT, SAM Broadcaster, and most DJ software. Choose based on your preference.

Q: How much disk space do recordings use?

A: Approximately 2.25 GB per hour at 1080p (5 Mbps), or about 54 GB per day of continuous recording. Check the Recordings tab for real-time disk usage.

Q: What ports need to be open for all features?

A: Complete port list:

  • 80/443 - HTTP/HTTPS web interface and HLS
  • 1935 - RTMP ingest
  • 8000-8050 - Shoutcast/Icecast radio (TCP)
  • 9000+ - SRT output (UDP, one per stream)

22. Keyboard Shortcuts

Speed up your workflow with these keyboard shortcuts:

Navigation

ShortcutAction
1Go to Dashboard
2Go to Live Streams
3Go to RTMP Push
4Go to Shoutcast
5Go to Radio Automation
6Go to Settings
7Go to Manual

Stream Controls

ShortcutAction
NNew Stream
RRefresh stream list
EscClose modal/dialog

Video Player

ShortcutAction
SpacePlay/Pause
MMute/Unmute
FToggle Fullscreen
EscExit Fullscreen

General

ShortcutAction
?Show keyboard shortcuts
/Focus search box (if available)
Keyboard shortcuts work when no input field is focused. Click outside any text box to use them.