Kirika/README.md

84 lines
4.2 KiB
Markdown
Raw Normal View History

2022-02-22 09:24:49 +00:00
# [![](resources/kirikas.png)](resources/kirika.png) Kirika
Collection of audio utilities for decoding/encoding files and streams.
2022-03-01 17:10:01 +00:00
* Not based on ffmpeg/libav/libavcodec/libavformat and alike
* Channel-based audio consumption/filter chain
* Raw sample analyzer channels
* AnalyzerChannel channels / mergers / splitters / trimmers
2022-02-22 09:24:49 +00:00
* Audio resampler
* Audio downmixing to stereo/mono
2022-03-01 17:10:01 +00:00
* Multi-codec decoder and encoder
* Multi-format packetizers
* ReplayGain 2.0 track/album calculator
2022-02-28 14:47:50 +00:00
2022-03-01 17:10:01 +00:00
## Codecs supported
2022-02-28 14:47:50 +00:00
2022-03-05 10:08:51 +00:00
| Codec | Containers | Decoder | Analyzer | Encoder | Notes |
|:----------:|:----------:|:-------:|:--------:|:-------:|:------------------------------------------------------------------------------------------------------------------------------------------------------|
2022-04-17 17:02:06 +00:00
| **FLAC** | FLAC, Ogg | ✅ | ✅ | ✅* | Adjustable encoding compression level and block size. |
2022-03-05 10:08:51 +00:00
| **TTA** | TTA | ✅ | ✅ | ✅ | Only 16bit encoding |
| **MP3** | MP3 | ✅ | - | ✅ | Adjustable encoding bitrate and mode. Decoding via [minimp3](https://github.com/kvark128/minimp3), encoding via [LAME](https://lame.sourceforge.io/). |
| **Opus** | Ogg | ✅ | - | ✅ | Adjustable encoding bitrate. |
| **Vorbis** | Ogg | ✅ | - | ❌ | |
2022-04-17 17:02:06 +00:00
| **AAC** | ADTS | ✅ | - | ✅ | Adjustable encoding bitrate and mode (LC, HEv2). |
* *Only FLAC container output implemented for encoder.
2022-02-22 09:24:49 +00:00
2022-03-01 17:10:01 +00:00
## Container packetizers supported
| Container | Packetizer | Keep Mode | Sample Number |
|:---------:|:----------:|:---------:|:-------------:|
2022-03-01 17:30:45 +00:00
| **FLAC** | ✅ | ✅ | ✅ |
2022-03-01 17:10:01 +00:00
| **TTA** | ❌ | - | - |
| **MP3** | ✅ | ✅ | ✅ |
| **Ogg** | ✅ | ✅ | ✅* |
| **ADTS** | ✅ | ✅ | ✅ |
2022-03-01 17:10:01 +00:00
2022-04-17 17:02:06 +00:00
* *Sample number (absolute granule position) of Ogg depends on underlying codec implementing it. Currently implemented for Opus
2022-03-01 17:10:01 +00:00
2022-02-22 09:24:49 +00:00
## Dependencies
### Go >= 1.18
### [libFLAC](https://github.com/xiph/flac) (required by [goflac](https://github.com/cocoonlife/goflac))
```shell
sudo apt install libflac-dev
```
### [libopus](https://github.com/xiph/opus) and [libopusfile](https://github.com/xiph/opusfile) (required by [go-pus](https://git.gammaspectra.live/S.O.N.G/go-pus))
```shell
sudo apt install libopus-dev libopusfile-dev
```
2022-02-27 18:44:04 +00:00
### [libopusenc](https://github.com/xiph/libopusenc) (required by [go-pus](https://git.gammaspectra.live/S.O.N.G/go-pus))
```shell
2022-02-28 12:54:17 +00:00
git clone --depth 1 https://github.com/xiph/libopusenc.git
2022-02-27 18:44:04 +00:00
cd libopusenc
./autogen.sh
./configure --prefix /usr
make
sudo make install
```
2022-02-28 13:38:23 +00:00
### [FDK AAC Codec Library](https://github.com/mstorsjo/fdk-aac) (required by [go-fdkaac](https://git.gammaspectra.live/S.O.N.G/go-fdkaac))
2022-02-28 12:54:17 +00:00
```shell
git clone --depth 1 https://github.com/mstorsjo/fdk-aac.git
cd fdk-aac
./autogen.sh
./configure --prefix /usr
make -j$(nproc)
sudo make install
```
2022-02-28 13:38:23 +00:00
### [LAME](https://lame.sourceforge.io/) (required by [go-lame](https://github.com/viert/go-lame))
2022-02-27 15:43:50 +00:00
```shell
sudo apt install libmp3lame-dev
```
2022-02-22 09:24:49 +00:00
### [libsamplerate](https://github.com/libsndfile/libsamplerate) (required by [gosamplerate](https://github.com/dh1tw/gosamplerate))
```shell
sudo apt install libsamplerate0-dev
```
### [libebur128](https://github.com/jiixyj/libebur128) (required by [go-ebur128](https://git.gammaspectra.live/S.O.N.G/go-ebur128))
```shell
sudo apt install libebur128-dev
2022-02-22 09:24:49 +00:00
```