Skip to main content

Root Command

Camera Workflow has a single root command with various flags for customization.

Syntax

media-converter [flags] [source] [destination]
Arguments:
  • source - Source directory containing media files (required)
  • destination - Destination directory for converted files (required)
Validation:
  • Exactly 2 arguments required
  • Source directory must exist
  • Destination directory created automatically if missing

Common Use Cases

Dry Run

Preview what would be converted without actually processing files:
media-converter --dry-run /media/photos /media/converted
Dry run mode shows file counts, estimated processing time, and output structure without modifying any files.

Standard Photo Conversion

Convert photos to modern formats:
# Convert to AVIF with quality 80
media-converter /photos /converted

Video Conversion

Convert videos to efficient codecs:
# Convert to H.265 with CRF 28
media-converter /videos /converted

Archive Mode

Copy files without conversion for backup/archival:
media-converter --copy-only /source /backup
Copy-only mode automatically enables checksum verification and is incompatible with conversion-related flags.

Parallel Processing

Control the number of concurrent conversions:
# Run 4 parallel conversions
media-converter --jobs 4 /source /dest

Adaptive Workers

Dynamically adjust worker count based on system resources:
media-converter \
  --adaptive-workers \
  --adaptive-workers-min 1 \
  --adaptive-workers-max 6 \
  --adaptive-workers-cpu-high 80 \
  --adaptive-workers-cpu-low 50 \
  /source /dest
Adaptive workers mode is especially useful for video conversions on systems with limited resources. The system automatically scales workers up or down based on CPU and memory utilization.

File Organization

Control output file organization:
# Files sorted into YYYY/MM-Month/YYYY-MM-DD/
media-converter --organize-by-date /source /dest
Supported languages: en, fr, es, de

Original File Handling

# Preserve source files after conversion
media-converter --keep-originals /source /dest
When --keep-originals=false, files are only deleted after triple verification: existence check, integrity check, and size validation.

Security and Validation

# Verify file integrity during copy
media-converter --verify-checksum --copy-only /source /dest

JSON Mode for Integration

Enable structured JSON output for programmatic use:
media-converter --json-mode /source /dest
JSON Events:
{"type":"start","total_files":100}
{"type":"progress","file":"photo.jpg","percent":50}
{"type":"complete","file":"photo.jpg","output_size":1024}
{"type":"error","message":"conversion failed","file":"bad.jpg","fatal":false}
{"type":"summary","converted":95,"failed":5}

Configuration File

Use a custom configuration file:
media-converter --config /path/to/config.yaml /source /dest
Default location: $HOME/.media-converter.yaml

Complex Examples

High-Quality Archival Conversion

media-converter \
  --photo-format avif \
  --photo-quality-avif 95 \
  --video-codec h265 \
  --video-crf 20 \
  --keep-originals \
  --organize-by-date \
  --jobs 4 \
  /original/media /archive/converted

Fast Batch Processing

media-converter \
  --photo-quality-avif 75 \
  --video-crf 30 \
  --jobs 8 \
  --adaptive-workers \
  --adaptive-workers-max 8 \
  /photos /output

Safe Production Run

# Step 1: Dry run to verify
media-converter --dry-run /source /dest

# Step 2: Run with verification
media-converter --verify-checksum --keep-originals /source /dest

# Step 3: After verification, clean up originals
media-converter --keep-originals=false --skip-disk-check /source /dest

Flag Incompatibilities

Certain flags cannot be used together:

Copy-Only Mode Restrictions

When --copy-only is enabled, the following flags are incompatible:
  • --photo-format
  • --photo-quality-avif
  • --photo-quality-webp
  • --video-codec
  • --video-crf
  • --video-acceleration
  • All --adaptive-workers-* flags
Attempting to use conversion flags with --copy-only will result in an error.

Help and Version

# Show help
media-converter --help

# Show version (if implemented)
media-converter --version

Build docs developers (and LLMs) love