Skip to main content

Crate caery_lib

Crate caery_lib 

Source
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§

CommandSpec
ConversionRequest

Enums§

AudioFormat
ConversionError
ConversionMode
OperationEvent
QualityPreset
VideoFormat

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