oximedia-batch
Comprehensive batch processing engine for OxiMedia.
Part of the oximedia workspace — a comprehensive pure-Rust media processing framework.
Version: 0.1.8 — 2026-05-29 — 709 tests
Features
Core Batch Processing
- Job Definition — Templates for transcode, QC, analysis, and file operations
- Job Queue — Priority-based queue with job dependencies and scheduling
- Execution Engine — Worker pool management with resource allocation and fault tolerance
Batch Operations
- Media Operations — Transcoding, quality control, analysis
- File Operations — Copy, move, rename, archive, checksum
- Transformation Pipelines — Multi-step processing with conditional branching
Template System
- Variable Substitution — File properties, date/time, media properties, custom variables
- Template Syntax — Conditionals, loops, functions
- Preset Templates — Web, mobile, broadcast, archive presets
Monitoring and Reporting
- Progress Tracking — Per-job and overall batch progress
- Status Reporting — Real-time job status updates
- Report Generation — JSON, CSV, HTML export formats
- Prometheus Metrics — Built-in metrics endpoint
Advanced Features
- Watch Folders — Automatic job submission for new files (via notify)
- Distributed Processing — Network worker support (integrates with oximedia-farm)
- Scripting Support — Lua 5.4 scripting for custom logic (mlua, vendored)
- REST API — axum-based HTTP API for remote job management
- Notifications — Email, Slack, Discord, Teams, webhooks (via reqwest)
Usage
Add to your Cargo.toml:
[]
= "0.1.8"
Basic Example
use ;
use FileOperation;
use Arc;
async
Job Configuration
let mut job = new;
job.set_priority;
job.set_retry_policy;
job.set_schedule;
job.set_resources;
REST API
# Submit job
# Get job status
# Cancel job
Architecture (51 source files, 600 public items)
Components:
BatchEngine— Main entry point, coordinates queue, engine, and databaseJobQueue— Priority-based queue with scheduling supportExecutionEngine— Manages worker pool and job executionDatabase— SQLite persistence for jobs, logs, and results (rusqlite + r2d2)Template— Variable substitution and template renderingMonitoring— Progress tracking and Prometheus metricsNotifications— Multi-channel notification system
Job Lifecycle:
- Job submitted to queue
- Scheduler checks schedule and dependencies
- Worker picks up job when ready
- Operation executor processes the job
- Results saved to SQLite database
- Notifications sent
- Metrics updated
Integrations
oximedia-transcode— Transcoding operationsoximedia-qc— Quality control checksoximedia-workflow— Orchestrationoximedia-farm— Distributed processingoximedia-monitor— Metrics and monitoring
License
Apache-2.0 — Copyright 2024-2026 COOLJAPAN OU (Team Kitasan)