# rskit-media — Media Processing Types
Media types, codec/format registry, pipeline builder, and processing traits.
[](https://github.com/kbukum/rskit/actions/workflows/ci.yml) [](https://crates.io/crates/rskit-media) [](https://docs.rs/rskit-media) [](https://github.com/kbukum/rskit/blob/main/LICENSE) [](https://github.com/kbukum/rskit/blob/main/core/Cargo.toml)
## Features
- `MediaPipeline` — lazy, chainable pipeline builder (extract, resize, crop, rotate, volume, speed, transcode, …)
- `MediaExecutor` / `MediaProbe` traits — backends implement these (see `rskit-media-ffmpeg`, `rskit-media-image`)
- Rich type vocabulary: `Codec`, `Format`, `Resolution`, `TimeRange`, `OutputConfig`, `Filter`
- `Registry` — codec/format compatibility checking
- `Progress` reporting with position, percentage, speed, and ETA
- Subtitle support: `SubtitleTrack`, `SubtitleEntry`
## Usage
```toml
[dependencies]
rskit-media = "0.2.0-alpha.3"
```
```rust
use rskit_media::{MediaPipeline, spatial::Resolution, time::TimeRange, MediaOp};
use rskit_storage::FileSource;
let source = FileSource::from_path("input.mp4");
let pipeline = MediaPipeline::from(&source)
.extract(TimeRange::from_seconds(10.0, 60.0))
.resize(Resolution::p1080(), Default::default());
println!("{} operations queued", pipeline.operations().len());
// Execute with a MediaExecutor backend (rskit-media-ffmpeg or rskit-media-image)
```
## See Also
[Main repository README](https://github.com/kbukum/rskit)