Skip to content

Starter profiles

On first run, Senta automatically creates 8 ready-made profiles - they’re visible on the Profiles page right away. This page walks through each one’s ffmpeg command: what it does, why each flag is there, and when the profile is (or isn’t) a good fit to use as-is.

Before going through the profiles one by one - a table of the flags that repeat across most of them (full list in the official ffmpeg documentation):

FlagWhat it does
-yOverwrite the output without asking for confirmation.
-hide_bannerDon’t print ffmpeg’s build/version banner at startup.
-re / -readrate 1Read the input at its own (real) speed instead of as fast as possible - needed so a file can be streamed like a live source.
-stream_loop -1Loop the input file - start over from the beginning once it ends, forever.
-map 0:0 -map 0:1Explicitly include tracks 0 (video) and 1 (audio) from the input - a safeguard in case ffmpeg would otherwise pick the wrong tracks.
-c:v, -c:aVideo and audio codec respectively. copy means “pass the stream through unchanged, no re-encoding.”
-b:v, -b:aTarget video and audio bitrate.
-preset fastSpeed vs. compression-efficiency tradeoff for software encoders (libx264/libx265) - fast trades a bit of quality/size for encoding speed.
-profile:v mainThe H.264 Main profile - a good balance of player compatibility and quality.
-filter:v yadifDeinterlacing - removes interlacing artifacts from sources that were shot interlaced.
-forced-idr 1Makes the encoder (relevant for NVENC) emit full IDR frames at keyframe points instead of lightweight I-frames - matters if the stream gets segmented later (HLS/DASH) or switched between sources.
-rOutput frame rate.
-gGOP size - the interval between keyframes, in frames.
-keyint_minMinimum interval between keyframes.
-f mpegtsOutput container format - MPEG-TS.
-gpuIndex of the NVIDIA GPU to use for NVENC hardware encoding.
${i} / ${o}The standard input/output variables - see Variables.
ffmpeg -y -hide_banner -i ${i} -map 0:0 -map 0:1 ${cv} ${gpu} -preset fast -profile:v main -filter:v yadif -forced-idr 1 -b:v 4M -c:a aac -b:a 128k -r 25 -g 8 -keyint_min 13 -f mpegts ${o}
WHERE
[
{
"desc": "gpu",
"data": {
"name": "GPU",
"description": "Select GPU which stream will use, set empty if you don't use GPU",
"command": "-gpu $value",
"default": ""
}
},
{
"desc": "cv",
"data": {
"name": "Video codec",
"description": "To copy original codec set copy",
"command": "-c:v $value",
"default": "",
"extension": {
"type": "select",
"options": ["h264_nvenc", "libx264", "libx265", "hevc_nvenc", "libaom-av1", "libvpx", "libvpx-vp9", "copy"]
}
}
}
]

HD transcoding at a 4 Mbps bitrate. When creating a stream, you can pick the video codec from a dropdown - hardware (h264_nvenc, hevc_nvenc), software (libx264, libx265, libaom-av1, libvpx*), or just copy to skip re-encoding video entirely - as well as which GPU to use for transcoding.

  • Pros: the most flexible of the starter profiles - the codec is chosen right when creating the stream, no need to edit the profile itself.
  • Cons: deinterlacing (yadif) and the GOP settings are baked into the profile, not exposed as variables - if the source is progressive or you need a different keyframe interval, you’ll need to copy and edit the profile by hand.
ffmpeg -re -y -hide_banner -i ${i} -map 0:0 -map 0:1 -c:v h264_nvenc -gpu 0 -preset fast -profile:v main -filter:v yadif -forced-idr 1 -b:v 1M -c:a aac -b:a 128k -r 25 -g 8 -keyint_min 13 -f mpegts ${o}

The same set of flags as HD, but with a fixed 1 Mbps bitrate and no variables - the codec (h264_nvenc) and GPU (0) are baked directly into the command.

  • Pros: minimal setup - ready to use right away if you have an NVIDIA card with NVENC.
  • Cons: won’t run at all without a GPU that supports NVENC; changing the codec or GPU index means editing the command directly.
ffmpeg -re -y -hide_banner -stream_loop -1 -i ${i} -gpu 1 -r 30000/1001 -g 8 -keyint_min 13 -preset fast -profile:v main -filter:v yadif -forced-idr 1 -c:v h264_nvenc -b:v 4M -c:a aac -b:a 128k -f mpegts ${o} -r 30000/1001 -g 8 -keyint_min 13 -preset fast -profile:v main -filter:v yadif -forced-idr 1 -vf scale=568:-1 -c:v h264_nvenc -b:v 1M -c:a aac -b:a 128k -f mpegts ${o}

A single ffmpeg process with two outputs at once: a full-resolution stream at 4 Mbps, and one scaled down to a width of 568px (-vf scale=568:-1 - the height is computed automatically to preserve the aspect ratio) at 1 Mbps. When creating a stream from this profile, Senta shows two fields - Output #0 and Output #1, for the full and the downscaled variant respectively.

  • Pros: one command instead of two separate streams - saves decoding the input twice (it’s decoded once for both outputs).
  • Cons: heavier GPU load (both variants are encoded at once), hard-tied to NVENC, -gpu 1 - the GPU index is baked into the command rather than exposed as a variable.
ffmpeg -readrate 1 -y -hide_banner -stream_loop -1 -vcodec copy -acodec aac -i ${i} ${o}

Copies the video without re-encoding and converts the audio track to AAC - useful when the source audio is in a format not supported by a player or CDN (AC3, for instance) and you don’t want to re-encode video.

  • Pros: barely touches CPU/GPU - only the audio gets re-encoded.
  • Cons: the AAC bitrate isn’t set explicitly, so ffmpeg’s default applies, which can be surprising; if the source audio is already AAC, this profile isn’t needed.
// Add a logo to the video
ffmpeg -i ${i} ${logo} -filter_complex "[1][0]scale2ref=oh*mdar:ih*0.2[logo][video];[video][logo]overlay=(main_w-overlay_w)-${x}:${y}" -y ${o}
WHERE
[
{
"desc": "logo",
"data": {
"name": "Logo path",
"description": "Print the path to the image file with the logo",
"command": "-i $value",
"default": ""
}
},
{
"desc": "x",
"data": {
"name": "Shift along the X axis",
"description": "Offset from the top right corner along the X axis",
"command": "$value",
"default": ""
}
},
{
"desc": "y",
"data": {
"name": "Shift along the Y axis",
"description": "Offset from the top right corner along the Y axis",
"command": "$value",
"default": ""
}
}
]

Overlays an image (the logo) onto the video. scale2ref first scales the logo to match the video’s height (ih*0.2 - 20% of the frame height, width computed automatically by scale2ref to preserve the logo’s aspect ratio), then overlay places it with an x/y offset from the frame’s top-right corner.

  • Pros: the logo path and position are set through variables, no need to touch the command itself.
  • Cons: the command has no -c:v/-c:a or -f - ffmpeg infers the output format from ${o}’s file extension (e.g. output.ts); if the destination is a network address with no extension (udp://...), you’ll need to add a format yourself, e.g. -f mpegts. The logo can only be anchored to the top-right corner - a different position means changing the overlay formula.
// Remove sound from video
ffmpeg -i ${i} -an -c:v copy ${o}

Strips the audio (-an - no audio) and copies the video stream unchanged.

  • Pros: near-instant - the video isn’t re-encoded.
  • Cons: since the video is a plain copy, this profile won’t work if you also need to change to a container/codec incompatible with the source.
// Simple testcard with 8 color bars and 1kHz tone
// You don't need any input file, just run it
ffmpeg -re -f lavfi -i pal100bars=size=1920x1080:rate=25 -c:v libx264 -g 12 -b:v 2M -f mpegts ${o}

Generates a test pattern - PAL color bars - via ffmpeg’s built-in lavfi source, with no input file at all.

  • Pros: doesn’t need a real video source - you can verify Senta → network → player in a minute.
  • Cons: resolution, bitrate, and frame rate are baked into the command, not exposed as variables.
// Streaming a static file
ffmpeg -re -stream_loop -1 -i ${i} -vcodec mpeg4 -aspect 16:9 -f mpegts ${o}

Loops a local file to simulate a live source - this is the exact profile used in the Quick Start example.

  • Pros: the simplest way to turn any file into a continuously running test stream.
  • Cons: the codec (mpeg4) is dated compared to h264/h265 and less bitrate-efficient; the aspect ratio is fixed at 16:9 regardless of the actual video.