How to get album image from MP3 using FFmpeg

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?

猜你喜欢

转载自blog.csdn.net/kingroc/article/details/81290141