我想将我的音乐从flac转换为ogg,目前oggenc可以完美地做到这一点,除了专辑封面。Metaflac可以输出专辑封面,但是似乎没有命令行工具可以将专辑封面嵌入ogg。MP3Tag和的EasyTag是能够做到这一点,有它的规范在这里它要求为Base64编码格式的图像。但是到目前为止,我一直无法获取图像文件,将其转换为base64并将其嵌入到ogg文件中。
如果我从已经嵌入了图像的ogg文件中获取base64编码的图像,则可以使用vorbiscomment轻松将其嵌入到另一个图像中:
vorbiscomment -l withimage.ogg > textfile
vorbiscomment -c textfile noimage.ogg
我的问题是采取类似jpeg的东西并将其转换为base64。目前我有:
base64 --wrap=0 ./image.jpg
这使我使用vorbiscomment并遵循标记规则将图像文件转换为base64,我可以将其嵌入到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是mime类型。
所以最后,我的问题是,我如何对文件进行base64编码并生成此标头以将其嵌入到ogg文件中?