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:
Basic Dry Run
Dry Run with Custom Settings
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:
AVIF (Default)
WebP
Custom Quality
# Convert to AVIF with quality 80
media-converter /photos /converted
Video Conversion
Convert videos to efficient codecs:
H.265 (Default)
H.264
AV1
Disable Hardware Acceleration
# 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:
Custom Job Count
Auto (Default)
# 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:
Organized by Date (Default)
Flat Structure
Custom Language
# 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
Keep Originals (Default)
Delete Originals
# 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
Checksum Verification
Custom Timeouts
Skip Disk Space Check
Custom Size Ratio
# 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