Quero converter minha música de flac para ogg, e atualmente oggenc faz isso perfeitamente, exceto na arte do álbum. O Metaflac pode produzir a arte do álbum, no entanto, parece não haver uma ferramenta de linha de comando para incorporar a arte do álbum no ogg. Mp3Tag e EasyTag são capazes de fazê-lo, e não há uma especificação para ele aqui que apela para a imagem a ser base64 codificado. No entanto, até agora não obtive êxito em obter um arquivo de imagem, convertê-lo em base64 e incorporá-lo em um arquivo ogg.
Se eu pegar uma imagem codificada em base64 de um arquivo ogg que já tenha a imagem incorporada, eu posso incorporá-la facilmente em outra imagem usando o vorbiscomment:
vorbiscomment -l withimage.ogg > textfile
vorbiscomment -c textfile noimage.ogg
Meu problema é pegar algo como um jpeg e convertê-lo em base64. Atualmente tenho:
base64 --wrap=0 ./image.jpg
O que me dá o arquivo de imagem convertido em base64, usando o vorbiscomment e seguindo as regras de marcação, posso incorporar isso em um arquivo ogg da seguinte forma:
echo "METADATA_BLOCK_PICTURE=$(base64 --wrap=0 ./image.jpg)" > ./folder.txt
vorbiscomment -c textfile noimage.ogg
No entanto, isso me dá um ogg cuja imagem não funciona corretamente. Notei que, ao comparar as seqüências base64, todas as imagens incorporadas corretamente têm uma linha de cabeçalho, mas todas as seqüências base64 que eu gero não possuem esse cabeçalho. Análise mais aprofundada do cabeçalho:
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
Que segue a especificação dada acima. O aviso 003 corresponde à capa e image / jpeg é do tipo mime.
Então, finalmente, minha pergunta é: como posso base64 codificar um arquivo e gerar esse cabeçalho junto com ele para incorporar em um arquivo ogg?