Tôi muốn chuyển đổi âm nhạc của mình từ flac sang ogg và hiện tại oggenc thực hiện điều đó một cách hoàn hảo ngoại trừ album nghệ thuật. Metaflac có thể xuất album nghệ thuật, tuy nhiên dường như không có công cụ dòng lệnh nào để nhúng album nghệ thuật vào ogg. MP3Tag và EasyTag có thể làm điều đó, và có một đặc điểm kỹ thuật cho nó ở đây yêu cầu hình ảnh được mã hóa base64. Tuy nhiên, cho đến nay tôi đã không thành công trong việc có thể lấy một tệp hình ảnh, chuyển đổi nó thành base64 và nhúng nó vào một tệp ogg.
Nếu tôi lấy một hình ảnh được mã hóa base64 từ một tệp ogg đã có hình ảnh được nhúng, tôi có thể dễ dàng nhúng nó vào một hình ảnh khác bằng cách sử dụng vorbiscomment:
vorbiscomment -l withimage.ogg > textfile
vorbiscomment -c textfile noimage.ogg
Vấn đề của tôi là lấy một cái gì đó như jpeg và chuyển đổi nó thành base64. Hiện tại tôi có:
base64 --wrap=0 ./image.jpg
Điều này mang lại cho tôi tệp hình ảnh được chuyển đổi thành base64, bằng cách sử dụng vorbiscomment và tuân theo các quy tắc gắn thẻ, tôi có thể nhúng tệp đó vào một tệp ogg như vậy:
echo "METADATA_BLOCK_PICTURE=$(base64 --wrap=0 ./image.jpg)" > ./folder.txt
vorbiscomment -c textfile noimage.ogg
Tuy nhiên, điều này mang lại cho tôi một ogg có hình ảnh không hoạt động đúng. Tôi nhận thấy khi so sánh các chuỗi base64 rằng tất cả các hình ảnh nhúng đúng đều có một dòng tiêu đề nhưng tất cả các chuỗi base64 tôi tạo ra đều thiếu tiêu đề này. Phân tích sâu hơn về tiêu đề:
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
Mà theo thông số kỹ thuật được đưa ra ở trên. Lưu ý 003 tương ứng với bìa trước và hình ảnh / jpeg là loại mime.
Vì vậy, cuối cùng, câu hỏi của tôi là, làm thế nào tôi có thể mã hóa một tập tin và tạo tiêu đề này cùng với nó để nhúng vào một tập tin ogg?