Video Conversion
Video Service runs FFmpeg or HandBrake jobs through a River queue. Its parameter schema uses URI strings and arrays for file sources.
Parameters
Use the following job parameters to run an FFmpeg preset against one source file:
{
"input_source": ["file:///media/source.mkv"],
"output_source": ["s3://encoded-media/source.mp4"],
"converter_type": "ffmpeg",
"config_name": "h264-standard",
"config_source": "file:///etc/mediamoth/presets/h264-standard.json"
}| Field | Type | Requirement |
|---|---|---|
input_source | URI array | At least one input. |
output_source | URI array | At least one output. |
converter_type | string | Exactly ffmpeg or handbrake; case-sensitive. |
config_name | string | Required preset/configuration name. |
config_source | URI | Required configuration file. |
The internal job_id, aggregate_id, and smart-tag snapshot are supplied by the platform and are excluded from the user-facing schema.
FFmpeg
FFmpeg supports multiple inputs and outputs. Its configuration file contains an ordered argument template:
{
"name": "h264-standard",
"description": "H.264 with AAC audio",
"template": [
"-i", "{{ input 0 }}",
"-c:v", "libx264",
"-crf", "23",
"-c:a", "aac",
"{{ output 0 }}"
]
}Video Service stages every source to a temporary file, renders input, output, tag, and chapter functions, runs FFmpeg, and copies each completed output through its destination provider.
HandBrake
HandBrake requires exactly one input and one output. config_source points to an exported HandBrake preset file and config_name selects the preset passed to HandBrakeCLI.
File access
Input, output, and configuration sources accept file://, rsync://, and s3:// URIs. Container-local file paths must be mounted into the worker at the same path.
services:
video-service:
volumes:
- /srv/media:/media
- /srv/presets:/presets:roThe corresponding sources would be file:///media/source.mkv and file:///presets/h264.json.
Queue behavior
Video jobs are unique by their River arguments and use one automatic attempt. MediaMoth exposes explicit requeue and cancellation operations. The queued job carries a snapshot of resolved smart tags so FFmpeg templates use the values chosen when the job sequence was created.