82 lines
3.0 KiB
Markdown
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).
|