Pro AV

Image Overlays

Add a logo, watermark, or other local PNG on top of the video without modifying the source media.

Overlays are session content. The player starts with none. Only this process's overlay_set commands add them. Restarting the player does not restore them. There is a hard cap of 32 overlay ids: a new id at the cap is refused; existing ids are never evicted to make room.

This is an HTTP-only extension. It is not part of the stable playback 10 commands or OSC. There is no named exhibition consumer yet.

Workflow

Use overlay_set as a complete replace by id. Send every required field each time. Optional fields use fixed defaults (opacity 1.0, visible true, z_order 0). The player does not patch omitted fields from the previous object.

For visual setup, use the debug panel Overlay tab, then copy the flat overlay_set envelope.

path is a local image file only. Relative paths resolve under control.media_root. Remote URLs are rejected. After a new overlay_set, that id leaves the old texture immediately (pending/loading/error frames are not drawn, and a failed load does not restore the previous image). Encoded files larger than 16 MiB, images wider/taller than 4096 px, or decoded images over 16M pixels (including a global 16M-pixel budget across all overlays) enter Error without drawing. Unknown fields are rejected.

z_order orders overlays among themselves. Ties use id lexicographic ascending (smaller id is drawn first).

Need on-screen text? Pre-render a PNG (or other local image) and place it with overlay_set. The public text OSD commands (text_*) were removed.

Commands

Use overlay_set, overlay_remove, and overlay_clear through POST /api/extensions/command. Read the current inventory with HTTP-only GET /api/extensions/overlays. That query returns a snapshot and is not a command; the old overlay_list command is gone.

{ "cmd": "overlay_set", "params": { "id": "logo", "path": "logo.png", "rect": {"x": 0.85, "y": 0.05, "w": 0.1, "h": 0.1}, "opacity": 1.0, "visible": true, "z_order": 10 } }
{ "cmd": "overlay_remove", "params": { "id": "logo" } }
{ "cmd": "overlay_clear" }

For the exact schema, use the Command Reference.

Previous / Next