目前我正在尝试使用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