Je veux convertir ma musique de flac en ogg, et actuellement oggenc le fait parfaitement, sauf pour les pochettes d'album. Metaflac peut produire des pochettes d'album, mais il ne semble pas y avoir d'outil de ligne de commande pour intégrer des pochettes d'album dans ogg. MP3Tag et EasyTag sont capables de le faire, et il y a une spécification ici qui demande que l'image soit encodée en base64. Cependant, jusqu'à présent, je n'ai pas réussi à prendre un fichier image, à le convertir en base64 et à l'intégrer dans un fichier ogg.
Si je prends une image encodée en base64 à partir d'un fichier ogg qui a déjà l'image intégrée, je peux facilement l'intégrer dans une autre image en utilisant le vorbiscomment:
vorbiscomment -l withimage.ogg > textfile
vorbiscomment -c textfile noimage.ogg
Mon problème prend quelque chose comme un jpeg et le convertit en base64. Actuellement, j'ai:
base64 --wrap=0 ./image.jpg
Ce qui me donne le fichier image converti en base64, en utilisant le vorbiscomment et en suivant les règles de marquage, je peux l'intégrer dans un fichier ogg comme ceci:
echo "METADATA_BLOCK_PICTURE=$(base64 --wrap=0 ./image.jpg)" > ./folder.txt
vorbiscomment -c textfile noimage.ogg
Cependant cela me donne un ogg dont l'image ne fonctionne pas correctement. J'ai remarqué en comparant les chaînes base64 que toutes les images correctement incorporées ont une ligne d'en-tête mais toutes les chaînes base64 que je génère manquent de cet en-tête. Analyse plus approfondie de l'en-tête:
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
Qui suit la spécification donnée ci-dessus. L'avis 003 correspond à la couverture et l'image / jpeg est le type mime.
Donc, finalement, ma question est, comment puis-je coder en base64 un fichier et générer cet en-tête avec lui pour l'incorporer dans un fichier ogg?