05 July 2026

Local Audio Streaming

My significant other wanted a local streaming option where they could control the songs. So I started adding our music to Jellyfin.


Rip a CD

Install abcde and its requirements:

  • sudo apt-get install abcde eyed3 lame flac id3v2


Modify abcde with the latest patch:


The options I use with abcde:

  • -o
    • output types
    • flac (lossless audio)
    • mp3 (small portable version)
  • -p
    • leading 0s on track numbers
  • -G
    • get album art
  • -B
    • embed album art
  • -V
    • verbose
  • -N
    • don't prompt
  • -d
    • CD/DVD/Bluray device to use


Create a ripcd.sh script to automate the rip:

  • cd Music
  • echo -e '#!/usr/bin/sh\n\nabcde -o flac,mp3 -p -G -B -V -N -d "$@"\n' >> ripcd.sh


Run the rip:

  • cd Music
  • sh ripcd.sh /dev/sr0


If you only want to rip a specific track:

  • cd Music
  • sh ripcd.sh /dev/sr0 1


Add Album to Jellyfin

Add a Library of Music type

Jellyfin was doubling up tracks as it listed both the flac and mp3. To solve this, I created a .ignore file that contained *.mp3 and placed it in each album folder that had this issue


Appendix

Sources


Patch:

From 5437ee1345d6c0fddee0edc65b32af43fe493922 Mon Sep 17 00:00:00 2001
From: Gerard Lanois <gerard@lanois.com>
Date: Thu, 16 Feb 2023 22:56:29 -0800
Subject: [PATCH] #1 Omit genre ID 255 (no genre).
---
 abcde | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/abcde b/abcde
index b53593a..2f06a43 100755
--- a/abcde
+++ b/abcde
@@ -912,10 +912,13 @@ do_tag ()
  ${COMMENTOUTPUT:+--comment "$COMMENTOUTPUT"} \
  );;
  esac
+ if [ "${GENREID}" != 255 ]; then
+     addopts+=( -G "$GENREID" )
+ fi
  run_command "tagtrack-$OUTPUT-$1" nice $ENCNICE $TAGGER $TAGGEROPTS \
  -A "$DALBUM" \
  -a "$TRACKARTIST" -t "$TRACKNAME" \
- -G "$GENREID" -n "${TRACKNUM:-$1}" \
+ -n "${TRACKNUM:-$1}" \
  ${TRACKNUM:+-N "$TRACKS"} \
  "${addopts[@]}" \
  "${ABCDETEMPDIR}/track$1.$OUTPUT"