使用LAME的id3tag_set_albumart进行挑战

时间:2013-08-16 16:30:01

标签: c++ lame

目前我正在尝试使用LAME将wave文件转换为mp3(我已成功完成)。我也尝试将id3tag写入mp3,这一点在id3tag_set_albumart之前取得了成功。 通过前端文件夹中的parse.c,我发现id3tag_set_albumart(图像)的第二个参数将是图像文件的内容,而第三个参数将是图像文件的大小。 但是当我这样做时(下面的代码),它返回0,根据lame.h成功,但编码拒绝发生(即波形文件转换为mp3)。

FILE* fpi = 0;
char *albumart = 0;
char *filename = "ty.jpg";
fpi = fopen(filename, "rb");
size_t size;
fseek(fpi, 0, SEEK_END);
size = ftell(fpi);
fseek(fpi, 0, SEEK_SET);
albumart = (char*)malloc(size);
fread(albumart, 1, size, fpi);
id3tag_set_albumart(lame, albumart, size);
free(albumart);
fclose(fpi);

编辑:当我调用id3tag_set_albumart时,lame_encode_buffer_interleaved返回-1,根据lame.h表示mp3buf太小。我不认为这与“数组的大小”有关,因为我将它增加到目前大小的两倍,但函数仍然返回-1

0 个答案:

没有答案