The simplest way using command:
ffmpeg -i input.mp3 -an -vcodec copy cover.jpg
The another way using FFmpeg API:
int main(int argc, char* argv[]) {
int i;
if(argc != 3){
printf("input mp3 url and output file name.");
return -1;
}
const char *path = argv[1];
const char *album_art_file = argv[2];
avformat_network_init();
av_register_all();
AVFormatContext *pFormatCtx = avformat_alloc_context();
if (avformat_open_input(&pFormatCtx, path, NULL, NULL) != 0) {
printf("avformat_open_input() failed");
av_free(pFormatCtx);
}
for (i = 0; i < pFormatCtx->nb_streams; i++)
if (pFormatCtx->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC) {
AVPacket pkt = pFormatCtx->streams[i]->attached_pic;
FILE* album_art = fopen(album_art_file, "wb");
fwrite(pkt.data, pkt.size, 1, album_art);
fclose(album_art);
av_packet_unref(&pkt);
break;
}
av_free(pFormatCtx);
return 0;
}
Do you think it is very easy?