Я хочу перетворити свою музику з 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 відповідає передній обкладинці, а зображення / jpeg - типу mime.
Отже, нарешті, моє питання полягає в тому, як я можу base64 кодувати файл і генерувати цей заголовок разом із ним для вбудовування у файл ogg?