Я хочу преобразовать свою музыку от 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 файл?
Я не знаю ни о чем, что делает это автоматически, просто указав на изображение.
Однако vorbiscomment может встроить произвольные теги, просто необходимо закодировать изображение в base64 и затем создать тег в правильном формате.
например, vorbiscomment -a -t 'METADATA_BLOCK_PICTURE=...' file.ogg newfile.ogg
необходимо будет взломать эти шаги сценарий некоторого вида для него, чтобы быть полезными.