caery-lib
caery-lib is the reusable media conversion engine used by Caery. 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
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.