8 releases
| 0.2.7 | Dec 18, 2025 |
|---|---|
| 0.2.6 | Jul 18, 2025 |
| 0.2.4 | Mar 5, 2024 |
| 0.2.3 | Oct 31, 2023 |
| 0.1.1 | Sep 20, 2023 |
#1394 in Audio
505KB
11K
SLoC
Example CLI for flacenc-rs
A CLI tool for encoding wav files into flac format, which compresses the input waveform by ~60% without any degradation. This is an example application of flacenc library.
Usage
To install (with using nightly rust; recommended):
cargo +nightly install flacenc-bin --features "simd-nightly"
Or, if you want to use stable channel:
cargo install flacenc-bin
Then, you can run encoding as follows:
flacenc --output output.flac input.wav
If you want to customize the encoder behavior, you can specify an additional config file. To do so, first, you may generate the default config file by:
flacenc --output output.flac --dump-config config.toml input.wav
Then, edit config.toml and encode with the customized config, as:
flacenc --output output.flac --config config.toml input.wav
(Experimental) decoder mode
This CLI tool can also decode FLAC files, as follows:
flacenc decode --output output.wav input.flac
Limitation
The encoder CLI only supports WAV file with 8/ 16/ 24-bit PCM, currently.
The decoder CLI only supports raw-FLAC file (typically with ".flac" extension). It currently does not support FLAC files with escape codes. However, at the moment, escape codes are not widely used (e.g. the FLAC reference encoder does not output FLAC files with escape codes.)
Feature Flags
This binary crate has a few feature flags to enable additional features:
pprof: If activated, the binary accept an additional command line argument--pprof-output [FILE]. If this flag is set, profiling data that can be processed bypprofare collected during the encoding process.simd-nightly: If activated, the dependency library is built withsimd-nightlyfeature. This is a recommended setting; however, it is only available in a nightly toolchain.
Contributing
See CONTRIBUTING.md for details.
License
Apache 2.0; see LICENSE for details.
Disclaimer
This encoder is still unstable and sometimes the encoded file may contain distortion, i.e. the encoder very rarely outputs broken signals. You can check whether you encountered an encoder bug by running, e.g., the reference decoder. The FLAC format contains MD5 digest of the input signal, and the reference decoder checks if the digest of the decoded signal matches with the stored one.
Dependencies
~9–18MB
~370K SLoC