Overview
Stream profiles control the execution of external programs that handle stream processing. Each profile defines:- Command: The program to execute (e.g.,
ffmpeg,streamlink,vlc) - Parameters: Command-line arguments with dynamic placeholders
- User Agent: Optional User-Agent override for HTTP requests
Dispatcharr includes two built-in protected profiles: Proxy and Redirect. These cannot be deleted or modified (except User-Agent settings).
Built-in Profiles
Proxy
Streams directly through Dispatcharr with buffering and failover support. No external processing.
Redirect
Returns HTTP redirect to original stream URL. Minimal processing overhead.
Creating a Stream Profile
Configuration Fields
Unique profile name for identification
Executable command to run. Examples:
ffmpegstreamlinkvlc/usr/local/bin/custom-script.sh
Command-line parameters with placeholder support.Available placeholders:
{streamUrl}- Original stream URL{userAgent}- User-Agent string
shlex).User-Agent to use for HTTP requests. Falls back to system default if not specified.This is the only field that can be modified on protected profiles.
Enable or disable this profile. Inactive profiles cannot be assigned to streams.
Protected profiles cannot be deleted or modified (except user_agent).System profiles (Proxy, Redirect) are always locked.
Parameter Substitution
Thebuild_command() method constructs the final command by replacing placeholders:
Profile Examples
FFmpeg Transcoding
Basic Stream Copy
Basic Stream Copy
H.264 Transcode
H.264 Transcode
Resolution Downscale
Resolution Downscale
Streamlink Integration
Streamlink Best Quality
Streamlink Best Quality
Streamlink with Retry
Streamlink with Retry
VLC Backend
VLC Streaming
VLC Streaming
Custom Scripts
Custom Processing Script
Custom Processing Script
Profile Assignment
Stream profiles can be assigned at multiple levels:System Default
Set in Settings > Stream Settings > Default Stream ProfileAccessible via
CoreSettings.get_default_stream_profile_id()M3U Account Level
Assign profile to entire M3U source:All streams from this source inherit the profile.
Profile precedence: Stream-level > M3U Account-level > System Default
Protected Profiles
System profiles withlocked=True have restrictions:
Special Profile Detection
locked status and profile name:
Command Building Process
User-Agent Handling
Profiles can reference a User-Agent model:Friendly name for the User-Agent
Complete User-Agent string:
Optional description of browser/device type
Whether this User-Agent is currently allowed
Best Practices
Profile Naming
Profile Naming
Use descriptive names that indicate:
- Backend: “FFmpeg”, “Streamlink”, “VLC”
- Purpose: “Transcode”, “Copy”, “Downscale”
- Quality: “720p”, “Best”, “Low Bandwidth”
FFmpeg H.264 720p TranscodeParameter Quoting
Parameter Quoting
Use proper quoting for parameters with spaces:The system uses
shlex.split() which handles quoted strings correctly.Testing Profiles
Testing Profiles
- Create profile with minimal parameters first
- Test with a single stream
- Monitor CPU/memory usage
- Verify output format compatibility
- Add advanced parameters incrementally
Performance Considerations
Performance Considerations
- Stream copy (
-c copy): Minimal CPU, fast - Transcoding (
-c:v libx264): High CPU, slower - Hardware acceleration: Use GPU encoders when available
- Preset selection: Balance speed vs quality (
veryfast,fast,medium)
Troubleshooting
Command Not Found
Command Not Found
Ensure the executable is:
- Installed on the system
- In the system PATH
- Executable by the Dispatcharr user
/usr/bin/ffmpegStream Buffering Issues
Stream Buffering Issues
Add buffer-related parameters:
Protected Profile Errors
Protected Profile Errors
If you see “Cannot modify X on a protected profile”:
- Only User-Agent can be changed on locked profiles
- Create a new profile instead of modifying system profiles
- Don’t attempt to delete Proxy or Redirect profiles