Ich möchte meine Musik von flac nach ogg konvertieren, und derzeit macht oggenc das perfekt, außer für Albumcover. Metaflac kann Albumcover ausgeben, es scheint jedoch kein Befehlszeilen-Tool zu geben, um Albumcover in ogg einzubetten. MP3Tag und EasyTag sind dazu in der Lage, und es gibt eine Spezifikation dafür Hier Das heißt, das Bild muss base64-codiert sein. Bisher ist es mir jedoch nicht gelungen, eine Bilddatei aufzunehmen, in base64 zu konvertieren und in eine ogg-Datei einzubetten.
Wenn ich ein base64-kodiertes Bild aus einer ogg-Datei nehme, in die das Bild bereits eingebettet ist, kann ich es mit vorbiscomment problemlos in ein anderes Bild einbetten:
vorbiscomment -l withimage.ogg > textfile
vorbiscomment -c textfile noimage.ogg
Mein Problem ist, etwas wie ein JPEG zu nehmen und es in base64 umzuwandeln. Derzeit habe ich:
base64 --wrap=0 ./image.jpg
Womit ich die Bilddatei mit vorbiscomment in base64 konvertiert habe und den Tagging-Regeln folge, kann ich das wie folgt in eine ogg-Datei einbetten:
echo "METADATA_BLOCK_PICTURE=$(base64 --wrap=0 ./image.jpg)" > ./folder.txt
vorbiscomment -c textfile noimage.ogg
Dies gibt mir jedoch ein OGG, dessen Bild nicht richtig funktioniert. Beim Vergleich der base64-Zeichenfolgen ist mir aufgefallen, dass alle richtig eingebetteten Bilder eine Kopfzeile haben, aber allen von mir generierten base64-Zeichenfolgen fehlt diese Kopfzeile. Weitere Analyse des Headers:
od -c header.txt
0000000 \0 \0 \0 003 \0 \0 \0 \n i m a g e / j p
0000020 e g \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000040 \0 \0 \0 \0 \0 \0 \0 \0 035 332
0000052
Was folgt die oben angegebene Spezifikation. Hinweis 003 entspricht der Titelseite und Image / JPEG ist der MIME-Typ.
Meine Frage ist nun, wie kann ich eine Datei mit base64 codieren und diesen Header zusammen mit ihm zum Einbetten in eine ogg-Datei generieren?