FFmpeg profiles define the full set of encoding parameters that ErsatzTV uses when transcoding media for a channel — including output resolution, video and audio codecs, bitrates, hardware acceleration, and normalization settings. The FFmpeg Profiles API gives you programmatic control over all profiles, and the Resolution API lets you look up a resolution record by its name string before creating or updating a profile.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ErsatzTV/legacy/llms.txt
Use this file to discover all available pages before exploring further.
GET /api/ffmpeg/profiles
Returns a list of all FFmpeg profiles with their complete configuration. Operation ID:GetFFmpegProfiles.
Response Fields
Internal database identifier for the profile.
Human-readable profile name.
Number of FFmpeg encoding threads.
0 means auto-detect.Hardware acceleration mode. Enum values:
None, Qsv, Nvenc, Vaapi, VideoToolbox, Amf, V4l2m2m, Rkmpp.VAAPI display string (relevant when
hardwareAcceleration is Vaapi).VAAPI driver selection. Enum values:
Default, iHD, i965, RadeonSI, Nouveau.Path to the VAAPI render device (e.g.
/dev/dri/renderD128).Extra hardware frames for QSV;
null when not applicable.Output resolution as a name string (e.g.
"1920x1080").How source video is scaled to fit the output resolution. Enum values:
ScaleAndPad, Stretch, Crop.Output video codec. Enum values:
None, H264, Hevc, Mpeg2Video, Av1, Copy.Codec profile string (e.g.
"high", "main").Encoder preset string (e.g.
"veryfast", "medium").Whether B-frames are permitted in the encoded output.
Output bit depth. Enum values:
EightBit, TenBit.Target video bitrate in kilobits per second.
Video encoder buffer size in kilobits.
HDR-to-SDR tone mapping algorithm. Enum values:
Linear, Clip, Gamma, Reinhard, Mobius, Hable.Output audio codec. Enum values:
None, Aac, Ac3, AacLatm, Copy.Target audio bitrate in kilobits per second.
Audio encoder buffer size in kilobits.
Loudness normalization mode. Enum values:
Off, LoudNorm.Number of output audio channels (e.g.
2 for stereo, 6 for 5.1).Output audio sample rate in Hz (e.g.
48000).When
true, output framerate is normalized to a standard value.When
true, interlaced source video is deinterlaced. The value is null for profiles created before this field was introduced.POST /api/ffmpeg/profiles/new
Creates a new FFmpeg profile. Operation ID:CreateFFmpegProfile.
Request Body
Display name for the new profile.
Number of FFmpeg threads. Use
0 for automatic.Hardware acceleration kind. One of:
None, Qsv, Nvenc, Vaapi, VideoToolbox, Amf, V4l2m2m, Rkmpp.VAAPI display string. Pass an empty string when not using VAAPI.
VAAPI driver. One of:
Default, iHD, i965, RadeonSI, Nouveau.VAAPI device path (e.g.
/dev/dri/renderD128). Pass an empty string when not using VAAPI.Extra QSV hardware frames. Pass
null when not using QSV.ID of the resolution record to use. Retrieve the ID via
GET /api/ffmpeg/resolution/by-name/{name}.Scaling behavior. One of:
ScaleAndPad, Stretch, Crop.Output video codec. One of:
None, H264, Hevc, Mpeg2Video, Av1, Copy.Codec profile string (e.g.
"high").Encoder preset string (e.g.
"veryfast").Whether to allow B-frames.
Bit depth. One of:
EightBit, TenBit.Video bitrate in kbps.
Video buffer size in kbps.
Tonemap algorithm. One of:
Linear, Clip, Gamma, Reinhard, Mobius, Hable.Output audio codec. One of:
None, Aac, Ac3, AacLatm, Copy.Audio bitrate in kbps.
Audio buffer size in kbps.
Loudness normalization. One of:
Off, LoudNorm.Number of output audio channels.
Output sample rate in Hz.
Whether to normalize the output framerate.
Whether to deinterlace interlaced source video.
200 OK with the created profile result on success, or an HTTP Problem response on failure.
PUT /api/ffmpeg/profiles/update
Updates an existing FFmpeg profile. Operation ID:UpdateFFmpegProfile. The request body is identical to CreateFFmpegProfile with the addition of the profile ID.
The ID of the FFmpeg profile to update.
200 OK with the update result on success, or a Problem response on failure.
DELETE /api/ffmpeg/delete/
Deletes an FFmpeg profile by its integer ID. Operation ID:DeleteFFmpegProfile.
The ID of the FFmpeg profile to delete.
Responses
| Status | Description |
|---|---|
200 OK | Profile deleted successfully. |
409 Conflict | Profile could not be deleted (e.g. it is still assigned to a channel). |
GET /api/ffmpeg/resolution/by-name/
Looks up a resolution record by its name string. This is useful for obtaining theresolutionId integer required when creating or updating a profile. Operation ID: GetResolutionByName.
The resolution name to look up, formatted as
{width}x{height} (e.g. 1920x1080).Response Fields
Database ID of the resolution record. Use this as
resolutionId when creating or updating a profile.Resolution name string (e.g.
"1920x1080").Width in pixels.
Height in pixels.
Whether this is a user-defined custom resolution (
true) or a built-in preset (false).Responses
| Status | Description |
|---|---|
200 OK | Resolution found; body contains ResolutionViewModel. |
404 Not Found | No resolution with that name exists. |
