Default Profile Values
When you create a new profile through the web UI,FFmpegProfile.New() populates the following defaults:
Field Reference
General
string
required
A human-readable label for the profile (e.g.
1080p H264 NVENC). Displayed in channel settings and API responses.int
Number of CPU threads FFmpeg may use for software encoding. Set to
0 to let FFmpeg choose automatically based on available cores. Ignored when a hardware accelerator is active.Resolution and Scaling
int / Resolution
References a resolution record (e.g. 1920×1080). Resolutions are managed at Settings → Resolutions. A profile’s resolution is the output resolution; source content is scaled to fit.
enum
Controls how source video is fitted to the target resolution when the aspect ratios differ.
FilterMode enum
Selects whether the padding filter runs on the GPU or CPU.
Video Encoding
enum
The output video codec.
string
The H.264/HEVC encoder profile (e.g.
main, high, main10). Defaults to high for H.264. Controls which decoding features the encoder may use.string
An encoder speed/quality preset. Available presets depend on the active hardware accelerator and video format:
Leave unset to use the encoder’s built-in default.
bool
Permits the encoder to use B-frames (bidirectional predicted frames), which improve compression but can cause issues with some hardware decoders. Disabled by default.
enum
Colour bit depth of the encoded output.
int (kbps)
Target video bitrate in kilobits per second. The default
2000 kbps is appropriate for 720p H.264. Increase to 4000–8000 kbps for 1080p, and 15000+ for 4K HEVC.int (kbps)
The VBV (Video Buffering Verifier) buffer size in kbps. Controls how much bitrate can burst above the target. The default is
4000 kbps (2× the video bitrate). A typical rule of thumb is 1.5–2× VideoBitrate.enum
Algorithm used to map HDR (wide gamut / high dynamic range) content to SDR output colour space during transcoding. Has no effect on SDR source material.
bool?
When
true, applies a deinterlace filter to interlaced source content. Set to null to inherit the channel-level default. Recommended true for broadcast-sourced content.Audio Encoding
enum
The output audio codec.
int (kbps)
Target audio bitrate in kbps. Default
192 kbps for stereo AAC. Use 384–448 kbps for AC-3 5.1.int (kbps)
Audio encoder buffer size in kbps. Default
384 kbps (2× audio bitrate).int
Number of output audio channels:
1 (mono), 2 (stereo), 6 (5.1), 8 (7.1). Default 2.int (kHz)
Output audio sample rate in kHz. Default
48 (standard for broadcast). Common values: 44 (CD), 48 (broadcast/streaming).Normalisation
bool
When
true, ErsatzTV ensures all source audio tracks are re-encoded to the target format rather than being copied. Prevents format mismatches when inserting filler or concatenating items.bool
When
true, ErsatzTV re-encodes video to the target format. Disabling this may cause playback artefacts if source clips use different codecs or parameters.bool
When
true, applies colour space normalisation (converts to BT.709 / SDR) so that content from different sources appears visually consistent.bool
When
true, converts all content to a consistent output framerate (as defined by the resolution record). Useful when mixing 24fps film and 30fps TV content on the same channel.enum
Controls integrated loudness normalisation of audio.
double? (LUFS)
The integrated loudness target in LUFS (Loudness Units Full Scale) used when
NormalizeLoudnessMode is LoudNorm. Typical values: -23.0 LUFS (EBU R128 broadcast), -16.0 LUFS (streaming).Hardware Acceleration
HardwareAccelerationKind enum
Selects the GPU acceleration backend. See Hardware Acceleration for setup instructions per platform.
string
DRM display path for VAAPI (e.g.
/dev/dri/card0). Only used when HardwareAcceleration is Vaapi.VaapiDriver enum
The VAAPI backend driver to request.
string
The DRM render device node for VAAPI (e.g.
/dev/dri/renderD128). Must be accessible inside the Docker container.int?
Extra surface frames allocated for Intel QSV. Increase this value (e.g. to
128) if you see errors like not enough surfaces during complex filter graphs. Default 64.Managing Profiles
1
Open FFmpeg Profiles
Navigate to Settings → FFmpeg Profiles in the ErsatzTV web UI.
2
Create a Profile
Click Add FFmpeg Profile, fill in the fields described above, and click Save. The new profile is immediately available for assignment to channels.
3
Assign to a Channel
Open Channels, edit the desired channel, and select your profile from the FFmpeg Profile dropdown.
4
Edit or Delete
Profiles can be edited at any time. Changes take effect on the next scheduled segment or stream reconnect. A profile cannot be deleted while it is assigned to a channel.
REST API
Profiles are also manageable via the REST API:
Example — create a profile:
Hardware Acceleration
Set up NVENC, QSV, VAAPI, and other GPU accelerators.
Streaming Modes
Understand TS, HLS Segmenter, and HLS Direct output modes.
