/$$ /$$
|__/ |__/
/$$$$$$$ /$$$$$$ /$$ /$$$$$$$$ /$$ /$$ /$$
/$$_____/ /$$__ $$| $$|____ /$$/| $$ | $$| $$
| $$$$$$ | $$$$$$$$| $$ /$$$$/ | $$ | $$| $$
\____ $$| $$_____/| $$ /$$__/ | $$ | $$| $$
/$$$$$$$/| $$$$$$$| $$ /$$$$$$$$| $$$$$$/| $$
|_______/ \_______/|__/|________/ \______/ |__/
Important
First and foremost: it should be noted that this app was built with the assistance of AI tools such as ChatGPT and/or Claude. If you do not like this, please refrain from using the app. Thanks!
Seizui is an automatic music transcoder to make your music library more compact. The goal is to keep the original essence of the files, staying transparent the original quality while being significantly smaller.
In other words, it watches your FLAC library and transcodes everything to a destination into your format of choice.
The supported input formats are:
- FLAC
- ALAC/m4a
- WAV
The supported output formats are:
- Opus
- AAC (m4a)
- mp3 - not yet implemented
Seizui is meant to be a simple tool to help maintain a smaller music library for portable DAP devices. If you just want to load FLACS, you can skip this tool completely. I like to keep alternative formats on my portable DAPs so that I can load more music while still hearing every detail.
Clone the git repo.
git clone https://git.saladino.dev/joey/seizui.gitEdit the compose file in your text editor of choice. Make sure to edit the environment and volumes sections.
cd seizui
nvim compose.yamlThe container is configured using the following environment variables:
| Variable Name | Required | Default | Description |
|---|---|---|---|
SRC_DIR |
No | /music/flac |
Directory where source FLAC files are stored (in the container). |
DST_DIR |
No | /music/opus |
Directory where transcoded files will be written (in the container). |
OUTPUT_FORMAT |
No | opus |
Output audio format. Supported values: opus, aac, mp3 (future). |
BITRATE |
No | 160k |
Target bitrate for Opus or MP3 CBR mode (e.g. 128k, 160k, 192k). Only used when OUTPUT_FORMAT=opus. |
AAC_VBR_QUALITY |
No | 4 |
VBR quality level for AAC. Scale is 1-5 (1 = lower quality, 5 = higher quality). Only used when OUTPUT_FORMAT=aac. |
MP3_VBR_QUALITY |
No | 2 |
VBR quality level for MP3. Scale is 0-9 (9 = lower quality, 0 = higher quality). Only used when OUTPUT_FORMAT=mp3. |
RESCAN_INTERVAL |
No | 300 |
How often (in seconds) the input directory is scanned for new files. |
Also make sure to set your volume variables appropriately.
volumes:
# mount your library as read only (hostPath:containerPath:read-only)
- /mnt/media/music:/source:ro
# where you want your output files to go (hostPath:containerPath)
- /mnt/media/transcode/seizui:/transcodesNote
Please note: since we are using ffmpeg with the --enable-nonfree flag, we cannot redistribute the build image. Therefore, we will need to build the container from source every time.
Build the container.
docker compose build --no-cacheRun seizui.
docker compose up -dUse the following commands to update the image.
docker compose down
git pull
docker compose build --no-cache
docker compose up -d