ferraus convert

Decode and re-encode between formats

Synopsis

ferraus convert <input> [options] [-o <output>]

What it does

Converts between WAV, AIFF, FLAC, Ogg Vorbis, Opus, MP3, and (through the FFmpeg bridge) M4A/AAC/ALAC. The output format follows the -o extension or --format. Lossless WAV/FLAC round trips are bit-exact at the same bit depth. When no resampling is needed the conversion streams packet by packet, so multi-hour files convert in constant memory. Source tags are copied to the output.

Examples

Lossless WAV to FLAC (bit-exact)

ferraus convert song.wav -o song.flac

FLAC to MP3 at about 256 kbps VBR

ferraus convert take.flac -o take.mp3 --bitrate 256k

Downsample and dither a 24-bit master to CD format

ferraus convert master.wav -o master-16.wav --bit-depth 16 --sample-rate 44100

Mono Opus for speech

ferraus convert podcast.wav -o podcast.opus --bitrate 64k --channels 1

Options

FlagTypeDefaultMeaning
--vbron|offonVariable bitrate for Opus, Vorbis, and MP3; off uses constant/average bitrate at --bitrate
--dithertriangular | shaped | nonetriangularDither when reducing bit depth: triangular (TPDF), shaped (noise-shaped TPDF), or none; seeded by --seed. Never applied when samples are already exact at the target depth

Global options

Every command also accepts the global options (-o, --json, --dry-run, --overwrite, --progress, ...). See Global options.

Exit codes

CodeMeaning
0Success
1Processing failed
2Usage or parameter error
3Input missing or unreadable
4Unsupported format or codec
8Cancelled
70Internal error (bug)

Common mistakes

  • Forgetting that outputs are never overwritten: pass --overwrite or a new -o path when re-running.

For models

  • MCP tool: ferraus_convert
  • Schema: ferraus schema convert
  • Pipeline: { op: convert, args: { ... } } (flag names with _ instead of -)
  • fx stage: no
{"command": "convert", "defaults": {"vbr": "on", "dither": "triangular"}}