Nodes/ComfyUI-FFMPEGA/FFMPEGA Text
ComfyUI Node

FFMPEGA Text

Burn in subtitles and watermarks without hand-writing a single drawtext filter

By AEmotionStudio·Created 8 months ago·Updated 2 days ago· 16
FFMPEGA Text
    • text_output
    text
    auto_modetrue
    modeauto
    positionauto
    font_size0
    font_color#FFFFFF
    start_time0.0
    end_time-1.0

    Adding text to video in raw ffmpeg means the drawtext filter, and drawtext is a special kind of hostile: escaping, fonts, positioning, the whole affair. FFMPEGA Text (the display name is "FFMPEGA Text", class FFMPEGATextInput) is the pack's civil version of that. You type text, pick a mode, and it outputs a JSON blob that the FFMPEG Agent parses into whatever text skill the job needs - burn_subtitles, text_overlay, or watermark. No filter syntax in sight.

    The smart part is auto_mode (On by default): the node sniffs your content and picks sensible defaults. Paste a full SRT block with timestamps and it treats it as subtitles; type a short string and it guesses overlay vs. watermark. For most beginner workflows, you literally just type the text and wire text_output into the Agent's text_a slot.

    The inputs that matter

    • text - the content. Plain text, multi-line subtitles, or full SRT format with timestamps. This is the one you'll touch every time.
    • mode - override when auto-detection guesses wrong: subtitle (burned, timed), overlay (drawn on the video), watermark (small, persistent), title_card (large, centered), or raw (pass through untouched).
    • position - where it sits; auto follows the mode (subtitle → bottom, watermark → bottom-right, and so on).
    • font_size / font_color - size in px (0 = auto: 24 for subtitles, 48 for overlay, 20 for watermark) and hex color, default white.
    • start_time / end_time - when the text is on screen. end_time of -1 = whole video.

    The single output is text_output - JSON-encoded text + metadata, wired to text_a (and text_b, text_c… for multiple text elements) on the FFMPEG Agent.

    One genuinely nice touch: the node ships 10 right-click presets - SRT Subtitle Example, Cinematic Subtitles, Bold Watermark, Title Card, Social Caption, Lower Third, Credits Roll, Chapter Marker, Meme Text, Copyright Notice - so you can start from a realistic example instead of a blank box. There's also a "Clear Text" reset.

    Installing it

    Part of ComfyUI-FFMPEGA: ComfyUI Manager → search ComfyUI-FFMPEGA → Install, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/AEmotionStudio/ComfyUI-FFMPEGA.git
    cd ComfyUI-FFMPEGA
    pip install -r requirements.txt
    

    Restart ComfyUI; ffmpeg on PATH is the pack's hard dependency.

    Where people get burned

    The classic failure is expecting the text to show up without an Agent in the path. This node only prepares the text - the burning happens in the FFMPEG Agent when it renders, so your chain needs to be Text → Agent → Save. Also, in manual (no-LLM) mode the Agent auto-generates an overlay/subtitle pipeline from the Text node's settings only when it's connected to text_a without an Effects Builder in between - stick to that wiring when you're not using an LLM. And a format note worth knowing before you're surprised by it: H.264/MP4 doesn't carry alpha, so "transparent" text-only overlays aren't a thing here - text burns over the frame, which is what you usually want anyway.

    CategoryFFMPEGA

    Inputs (8)

    NameTypeDefaultDescription
    textSTRINGThe text content to use. Can be plain text, multi-line subtitles, or full SRT format with timestamps.
    auto_modeoptBOOLEANtrueWhen Auto, the system detects whether your text is subtitles, a watermark, or overlay text and sets defaults accordingly. Turn off for full manual control.
    modeoptCOMBOautoText usage mode. 'auto' detects from content. 'subtitle' burns timed text. 'overlay' draws text on video. 'watermark' adds small persistent text. 'title_card' shows large centered text. 'raw' passes text through unchanged.
    positionoptCOMBOautoWhere to place the text. 'auto' chooses based on mode (subtitle → bottom, watermark → bottom-right, etc.).
    font_sizeoptINT00–200Font size in pixels. 0 = auto (24 for subtitles, 48 for overlay, 20 for watermark).
    font_coloroptSTRING#FFFFFFText color — click to pick a color or type a hex value (#RRGGBB).
    start_timeoptFLOAT0.00–3600Start time in seconds. 0 = beginning of video.
    end_timeoptFLOAT-1.0-1–3600End time in seconds. -1 = full video duration.

    Outputs (1)

    NameTypeDescription
    text_outputSTRINGJSON-encoded text with metadata. Connect to text_a, text_b, etc. on the FFMPEGA Agent node.