当前位置: 首页 > Linux

使用ffmpeg读取音乐文件的专辑信息(包括专辑封面图)

时间:2023-04-06 23:16:54 Linux

工作原理读取元数据AVFormatContext结构中有一个属性是元数据,当我们读取一个多媒体文件时,我们可以通过AVDictionaryEntry访问这个属性的数据。AVFormatContext*fmt_ctx=NULL;AVDictionaryEntry*tag=NULL;av_register_all();if((ret=avformat_open_input(&fmt_ctx,"path_to_file.mp3",NULL,NULL))){printf("打开文件失败");}//读取元数据中的所有标签while((tag=av_dict_get(fmt_ctx->metadata,"",tag,AV_DICT_IGNORE_SUFFIX))){printf("Tag:%s,Value:%s",tag->key,tag->价值);}AvFormatContextAVDictionaryEntry读取元数据官方示例Readalbumcoverimage//读取格式头if(fmt_ctx->iformat->read_header(fmt_ctx)<0){printf("Noheaderformat");返回;}for(inti=0;inb_streams;i++){if(fmt_ctx->streams[i]->disposition&AV_DISPOSITION_ATTACHED_PIC){AVPacketpkt=fmt_ctx->streams[i]->attached_pic;//使用QImage读取完整的图片数据(注意图片数据是分析的文件数据,需要使用QImage::fromdata来分析读取)QImageimg=QImage::fromData((uchar*)pkt.data,pkt.size);imageWidget->setPixmap(QPixmap::fromImage(img));休息;}}深度文件管理器(Linuxdeepin)添加的音乐文件预览播放支持效果:音乐文件封面缩略图预览播放预览