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?
Mir ist nichts bewusst, was dies automatisch durch einfaches Zeigen auf das Bild bewirkt.
jedoch Vorbemerkung Sie können beliebige Tags einbetten codiere das Bild in base64 und dann Konstruieren Sie das Tag im richtigen Format .
z.B
vorbiscomment -a -t 'METADATA_BLOCK_PICTURE=...' file.ogg newfile.ogg
Sie müssen diese Schritte in ein Skript hacken, damit es nützlich ist.
quelle
getconf ARG_MAX
? Leider führt kein Weg an dieser Grenze vorbei, ohne den Kernel neu zu kompilieren. Hier auf 64-Bit 2.6.32-24 habe ich 2 MB.