diff --git a/add_compilation_tag-ffmpeg_opus.sh b/add_compilation_tag-ffmpeg_opus.sh index ef6d67b..c81c793 100755 --- a/add_compilation_tag-ffmpeg_opus.sh +++ b/add_compilation_tag-ffmpeg_opus.sh @@ -7,10 +7,6 @@ set -ex # https://xiph.org/flac/format.html#metadata_block_picture # https://github.com/navidrome/navidrome/issues/2445 -# Erstelle die vorbis.head Datei mit dem angegebenen Inhalt -echo -en "\0\0\0\x03\0\0\0\x0aimage/jpeg\0\0\x01\x40cover.jpg\0\0\x01\x40\0\0\0\x0e\0\0\0\x20\0\0\0\0\0\0\x05\xad" \ - > vorbis.head - # Funktion, um Opus-Dateien zu verarbeiten process_opus_files() { for file in "$1"/*.opus; do @@ -18,6 +14,18 @@ process_opus_files() { # Extrahiere Cover ffmpeg -i "$file" -an -vcodec mjpeg -vf scale=320:-1 cover.jpg +# Berechne die Länge der Bilddaten in Bytes +IMAGE_LENGTH=$(wc -c < cover.jpg) + +# Konvertiere die Länge in Hexadezimalwert und dann in Big-Endian-Format +IMAGE_LENGTH_HEX=$(printf '%08X' $IMAGE_LENGTH) +IMAGE_LENGTH_BE=$(echo $IMAGE_LENGTH_HEX | sed 's/\(..\)/\\x\1/g') + +# Erstelle die vorbis.head Datei mit dem angegebenen Inhalt +# Beachte: Die Länge der Bilddaten wird hier eingefügt +echo -en "\0\0\0\x03\0\0\0\x0aimage/jpeg\0\0\0\x08test.jpg\0\0\0\x08\0\0\0\x0e\0\0\0\x20\0\0\0\0$IMAGE_LENGTH_BE" > vorbis.head + + # Erstelle eine base64-kodierte Version des Cover-Bildes und vorbis.head base64_cover=$(cat vorbis.head cover.jpg | base64 --wrap=0)