caery-lib 0.1.0

Reusable ffmpeg media conversion engine from Caery.
Documentation
# caery-lib

`caery-lib` is the reusable media conversion engine used by [Caery](https://github.com/Tknott95/KnottConverter). It validates conversion requests, builds safe `ffmpeg` commands, probes duration with `ffprobe`, and reports conversion logs and progress as events.

The crate supports video-to-audio extraction, video transcoding, and audio transcoding across Caery's supported formats and quality presets.

## Example

```no_run
use caery_lib::{
    start_conversion, AudioFormat, ConversionMode, ConversionRequest, OperationEvent,
    QualityPreset, VideoFormat,
};
use std::path::PathBuf;

let request = ConversionRequest {
    mode: ConversionMode::ExtractAudio,
    input_path: PathBuf::from("clip.mp4"),
    output_path: PathBuf::from("clip.mp3"),
    audio_format: AudioFormat::Mp3,
    video_format: VideoFormat::Mp4,
    quality: QualityPreset::Balanced,
    overwrite: false,
};

let events = start_conversion(&request)?;
for event in events {
    match event {
        OperationEvent::Progress { current_seconds, total_seconds } => {
            println!("{current_seconds:.1} / {total_seconds:.1}");
        }
        OperationEvent::Finished(result) => {
            result.expect("ffmpeg conversion failed");
            break;
        }
        _ => {}
    }
}
# Ok::<(), caery_lib::ConversionError>(())
```

## Requirements

`ffmpeg` performs conversions and `ffprobe` provides duration information. Both executables must be available on `PATH` at runtime.