External Tasks

July 20, 2026 ยท View on GitHub

An external task runs a script or binary when a non-skipped clip starts. Enable it and set the executable path in the channel playout settings.

ffplayout passes the current playout data as a JSON object in the first command-line argument. It includes the current media, playout mode, elapsed time, time shift, live-ingest state, and available audio-level data.

For example, a shell script can read the JSON argument as its first parameter:

#!/bin/sh
data="\$1"
printf '%s\n' "$data" >> /var/log/ffplayout-task.log

The configured file must be executable by the user running ffplayout.

Lifecycle Limits

Only one external task can run per channel. Starting the next clip task first terminates a still-running task from the previous clip. Stopping the channel also terminates its task. A task that runs longer than 30 seconds is terminated automatically.

External tasks should finish quickly. Use a separate service, queue, or job runner for work that needs to continue beyond the clip boundary.