Я хочу преобразовать свою музыку из flac в ogg, и в настоящее время oggenc делает это отлично, за исключением обложек альбомов. Metaflac может выводить обложки альбомов, однако, похоже, нет инструмента командной строки для встраивания обложек альбомов в ogg. Mp3Tag и EasyTag в состоянии сделать это, и есть спецификация для него здесь , который требует изображение , которое будет в кодировке base64. Однако до сих пор мне не удалось взять файл изображения, преобразовать его в base64 и встроить в файл ogg.
Если я возьму изображение в кодировке base64 из файла ogg, в который уже встроено изображение, я могу легко встроить его в другое изображение, используя vorbiscomment:
vorbiscomment -l withimage.ogg > textfile
vorbiscomment -c textfile noimage.ogg
Моя проблема заключается в том, чтобы взять что-то вроде JPEG и преобразовать его в base64. В настоящее время у меня есть:
base64 --wrap=0 ./image.jpg
Что дает мне файл изображения, преобразованный в base64, используя vorbiscomment и следуя правилам тегирования, я могу встроить его в файл ogg следующим образом:
echo "METADATA_BLOCK_PICTURE=$(base64 --wrap=0 ./image.jpg)" > ./folder.txt
vorbiscomment -c textfile noimage.ogg
Однако это дает мне ogg, изображение которого не работает должным образом. При сравнении строк base64 я заметил, что все правильно встраиваемые изображения имеют строку заголовка, но во всех генерируемых мной строках base64 этот заголовок отсутствует. Дальнейший анализ заголовка:
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
Который следует спецификации, приведенной выше. Примечание 003 соответствует передней обложке, а image/jpeg - это тип пантомимы.
Итак, наконец, мой вопрос, как я могу base64 кодировать файл и генерировать этот заголовок вместе с ним для встраивания в файл ogg?