Files
convertis/README.md
T
Elias Wendland eb76ed1937
Release / check-release (push) Successful in 17s
Release / build (push) Skipped
Release / package (deb) (push) Skipped
Release / package (rpm) (push) Skipped
Release / publish (push) Skipped
CI / test (push) Failing after 2m6s
refactor: restructure project into a workspace by introducing a plugin API crate and modularizing individual plugin definitions.
2026-07-17 15:50:50 +02:00

82 lines
3.0 KiB
Markdown

# Convertis
Convertis 0.3 is a modular Linux CLI for routing files through independently installed conversion plugins. The base `convertis` package contains the engine and no converters.
## Installation
Install the engine first:
```sh
sudo apt install convertis
# or
sudo dnf install convertis
```
Then install only the plugins you need. Each plugin is a separate package:
```sh
sudo apt install convertis-native-image
sudo apt install convertis-ffmpeg-video convertis-ffmpeg-audio
```
Convenience bundles are available:
- `convertis-ffmpeg`: all FFmpeg plugins, including frame extraction and assembly.
- `convertis-image`: native image, ASCII, ImageMagick, and GraphicsMagick plugins.
- `convertis-plugins-all`: every official plugin.
When no installed route can perform a conversion, Convertis prints the individual package or packages that provide one.
### Raw release
The release page contains a raw `x86_64-unknown-linux-gnu` executable and one ZIP containing all official `.so` plugins. Extract its `plugins/` directory beside the executable. Plugins can also be placed directly beside the executable, in `~/.local/lib/convertis/plugins`, or in `/usr/lib/convertis/plugins`.
Plugins use an exact-version Rust ABI. A plugin must have been built for the same Convertis release; incompatible libraries are rejected before loading.
## Usage
```sh
convertis input.png output.ico
convertis input.mp4 frames/ --to frames
convertis frames/ output.mp4
convertis input.png output.txt --option width=120
```
Input formats are detected from file contents. The output extension indicates the requested target and can be overridden with `--to`. Use `--from` only when content detection cannot recognize a format.
Frame extraction creates numbered images and `.convertis-frames.json`, which preserves the source frame rate and timing for the frames-to-video plugin. External frame folders without metadata use lexical ordering and 30 FPS by default.
Useful inspection commands:
```sh
convertis --list-plugins
convertis --list-formats
convertis --help
```
Use `--no-default-plugins` with explicit `--plugin-dir` arguments to run in an isolated plugin environment.
Plugin settings use repeatable `--option key=value` arguments. A plugin-qualified key such as `ffmpeg-frames-to-video.fps=24` can disambiguate settings in a multi-plugin route.
## Building
Build the engine and every official plugin:
```sh
cargo build --release --workspace
```
The engine is `target/release/convertis`; plugins are `target/release/libconvertis_*.so`.
## Plugin API
The workspace crate `convertis-plugin-api` defines the exact-version Rust trait used by official plugins. Plugin metadata is checked through a small C-compatible entry point before the Rust factory is called. The official plugin crates are the reference examples; ABI compatibility across Convertis releases is not promised.
## Platforms
Version 0.3 supports 64-bit GNU/Linux. Windows and musl builds are intentionally sunset for now.
## License
Convertis is licensed under GPL-3.0-only. See [LICENSE](LICENSE).