Quiero convertir mi música de flac a ogg, y actualmente oggenc lo hace perfectamente, excepto por la carátula del álbum. Metaflac puede generar carátulas de álbum, sin embargo, parece que no hay una herramienta de línea de comandos para incrustar carátulas de álbum en ogg. MP3Tag y EasyTag son capaces de hacerlo, y no hay una especificación para que aquí el que llama a la imagen que se codifica en base64. Sin embargo, hasta ahora no he podido tomar un archivo de imagen, convertirlo en base64 e incrustarlo en un archivo ogg.
Si tomo una imagen codificada en base64 de un archivo ogg que ya tiene la imagen incrustada, puedo incrustarla fácilmente en otra imagen usando vorbiscomment:
vorbiscomment -l withimage.ogg > textfile
vorbiscomment -c textfile noimage.ogg
Mi problema es tomar algo como un jpeg y convertirlo a base64. Actualmente tengo:
base64 --wrap=0 ./image.jpg
Lo que me da el archivo de imagen convertido a base64, usando vorbiscomment y siguiendo las reglas de etiquetado, puedo incrustarlo en un archivo ogg de esta manera:
echo "METADATA_BLOCK_PICTURE=$(base64 --wrap=0 ./image.jpg)" > ./folder.txt
vorbiscomment -c textfile noimage.ogg
Sin embargo, esto me da un ogg cuya imagen no funciona correctamente. Al comparar las cadenas de base64, noté que todas las imágenes incrustadas correctamente tienen una línea de encabezado, pero todas las cadenas de base64 que genero carecen de este encabezado. Análisis adicional del encabezado:
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 sigue la especificación dada anteriormente. El aviso 003 corresponde a la portada e image / jpeg es el tipo mime.
Finalmente, mi pregunta es, ¿cómo puedo codificar un archivo base64 y generar este encabezado junto con él para incrustarlo en un archivo ogg?
No conozco nada que lo haga automáticamente simplemente señalando la imagen.
Sin embargo, vorbiscomment puede incrustar etiquetas arbitrarias, solo necesita codificar la imagen en base64 y luego construir la etiqueta en el formato correcto .
p.ej
vorbiscomment -a -t 'METADATA_BLOCK_PICTURE=...' file.ogg newfile.ogg
tendrás que introducir estos pasos en un script de algún tipo para que sea útil.
fuente
getconf ARG_MAX
? Desafortunadamente, no hay forma de evitar este límite sin volver a compilar el núcleo. Aquí en 64 bits 2.6.32-24, tengo 2 MB.