Expand description
§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;
}
_ => {}
}
}§Requirements
ffmpeg performs conversions and ffprobe provides duration information. Both executables must be available on PATH at runtime.
Structs§
Enums§
Functions§
- build_
command - duration_
progress_ label - format_
duration - human_
size - media_
kind_ label - parse_
ffmpeg_ progress_ seconds - path_
extension_ lower - probe_
duration - shell_
quote - start_
conversion - Validates a request and starts its conversion on a background thread.
- start_
operation - suggest_
output_ path - supported_
audio_ extension - supported_
media_ extension - supported_
video_ extension - validate_
request