Saya ingin mengubah musik saya dari flac ke ogg, dan saat ini oggenc melakukannya dengan sempurna kecuali untuk sampul album. Metaflac dapat menampilkan seni album, namun sepertinya tidak ada alat baris perintah untuk menanamkan seni album ke ogg. MP3Tag dan EasyTag dapat melakukannya, dan ada spesifikasi untuk itu di sini yang menyerukan agar gambar dienkode base64. Namun sejauh ini saya belum berhasil mengambil file gambar, mengubahnya menjadi base64 dan menanamkannya ke dalam file ogg.
Jika saya mengambil gambar yang disandikan base64 dari file ogg yang sudah memiliki gambar yang disematkan, saya dapat dengan mudah menanamkannya ke gambar lain menggunakan vorbiscomment:
vorbiscomment -l withimage.ogg > textfile
vorbiscomment -c textfile noimage.ogg
Masalah saya adalah mengambil sesuatu seperti jpeg dan mengubahnya menjadi base64. Saat ini saya punya:
base64 --wrap=0 ./image.jpg
Yang memberi saya file gambar dikonversi ke base64, menggunakan vorbiscomment dan mengikuti aturan penandaan, saya bisa menanamkan itu ke dalam file ogg seperti:
echo "METADATA_BLOCK_PICTURE=$(base64 --wrap=0 ./image.jpg)" > ./folder.txt
vorbiscomment -c textfile noimage.ogg
Namun ini memberi saya sebuah ogg yang gambarnya tidak berfungsi dengan baik. Saya perhatikan ketika membandingkan string base64 bahwa semua gambar yang disematkan dengan benar memiliki baris header tetapi semua string base64 yang saya hasilkan kurang memiliki header ini. Analisis lebih lanjut dari tajuk:
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
Yang mengikuti spec yang diberikan di atas. Perhatikan 003 sesuai dengan sampul depan dan gambar / jpeg adalah tipe mime.
Jadi akhirnya, pertanyaan saya adalah, bagaimana saya bisa base64 menyandikan file dan menghasilkan header ini bersama dengan itu untuk menanamkan ke dalam file ogg?
Saya tidak mengetahui apa pun yang melakukannya secara otomatis dengan hanya menunjuk ke gambar.
Namun vorbiscomment dapat menyematkan tag arbitrer, Anda hanya perlu menyandikan gambar di base64 dan kemudian membuat tag dalam format yang benar .
misalnya
vorbiscomment -a -t 'METADATA_BLOCK_PICTURE=...' file.ogg newfile.ogg
Anda harus meretas langkah-langkah ini menjadi semacam skrip agar bermanfaat.
sumber
getconf ARG_MAX
? Sayangnya tidak ada cara untuk melewati batas ini tanpa mengkompilasi ulang kernel. Di sini, pada 64-bit 2.6.32-24, saya memiliki 2 MB.