工作原理

读取metadata

AVFormatContext 结构体中有一个属性是metadata,我们在读取一个多媒体文件的时候,可以通过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("Fail to open file");

}

//读取metadata中所有的tag

while ((tag = av_dict_get(fmt_ctx->metadata, "", tag, AV_DICT_IGNORE_SUFFIX))){

printf("Tag:%s , Value: %s", tag->key, tag->value);

}

读取专辑封面图片

// read the format headers

if (fmt_ctx->iformat->read_header(fmt_ctx) < 0) {

printf("No header format");

return;

}

for (int i = 0; i < fmt_ctx->nb_streams; i++){

if (fmt_ctx->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC) {

AVPacket pkt = fmt_ctx->streams[i]->attached_pic;

//使用QImage读取完整图片数据(注意,图片数据是为解析的文件数据,需要用QImage::fromdata来解析读取)

QImage img = QImage::fromData((uchar*)pkt.data, pkt.size);

imageWidget->setPixmap(QPixmap::fromImage(img));

break;

}

}

我给深度文件管理器添加的音乐文件预览播放的支持效果(Linux deepin):

音乐文件封面缩略图预览

播放预览

linux给音乐添加封面,利用ffmpeg读取音乐文件的专辑信息(包括专辑封面图片)相关推荐

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

    工作原理 读取metadata AVFormatContext 结构体中有一个属性是metadata,我们在读取一个多媒体文件的时候,可以通过AVDictionaryEntry访问这个属性的数据. A ...

  2. python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用

    注:本文所指的YUV均为YUV420中的I420格式(最常见的一种),其他格式不能用以下的代码. 位深为8bit时,每个像素占用1字节,对应文件指针的fp.read(1): 位深为10bit时,每个像 ...

  3. python xlrd读取文件报错_python利用xlrd读取excel文件始终报错原因

    1.代码按照网上百度的格式进行书写如下: 但运行后,始终报错如下: 百度了xlrd网页: 分明支持xls和xlsx两种格式的文件,但运行始终报错. 最后找到原因是因为我所读取的文件虽然是以.xls命名 ...

  4. 使用ffmpeg读取本地文件,进行推流

    使用ffmpeg读取本地文件,进行推流,跳到指定时间播放. 注意MP4文件h264_mp4toannexb与aac_adtstoasc. 要实现循环播放注意两点: 1.播放到结尾,跳到开始位置重新播放 ...

  5. 利用FFmpeg进行视频文件进行分割

    利用FFMPEG命令进行文件分割 ffmpeg -ss 00:00:00 -i input.mp4 -c copy -t 60 output.mp4 -ss 表示视频分割的起始时间,-t 表示分割时长 ...

  6. [torchtext]如何利用torchtext读取json文件并生成batch

    如何利用torchtext读取json文件并生成batch 设置Field 使用torchtext.data.Tabulardataset.splits读取文件 构建vocab表 使用torchtex ...

  7. 利用POI读取excel文件(java)

    利用POI读取excel文件(java) 摘要:利用java读取excel文件,读取文件并获取文件中每一个sheet中的值. 一.需要提前导入的包: import java.io.File;impor ...

  8. java利用poi读取excel_java利用POI读取excel文件的方法

    摘要:利用java读取excel文件,读取文件并获取文件中每一个sheet中的值. 一.需要提前导入的包: import java.io.File; import java.io.FileInputS ...

  9. 利用Python读取fasta文件并进行一系列操作(上)

    利用Python读取fasta文件并进行一系列操作(上) 概述 语言:python3.8 模块:pysam collections 可选:jupyter 整体思路:将fasta格式的基因原始数据处理为 ...

最新文章

  1. html分页自动加载数据库,AngularJS实现分页显示数据库信息
  2. 数据库获取的字符串按照逗号分隔,放进数组集合中
  3. dsp课程设计c语言源码,DSP课程设计-基于C语言实现256点的FFT精选.pdf
  4. JDK 命令之 jar -- 压缩/解压缩工具
  5. jquery报.live() is not a function的解决方法
  6. 存储过程与触发器的应用
  7. lsqnonlin函数_matlab非线性最小二乘函数
  8. java kill 线程_java – 如何在等待中杀死正在运行的线程?
  9. Atitit  代理与分销系统(1)  子代理 充值总额功能设计概览 sum() groubpy subagt
  10. QT开发(九)—— Qt实现应用内动态切换语言,使用Qt语言家编译字体包
  11. phpstudy集成环境搭建网站
  12. IP 伪装简易使用说明
  13. 双机串行通讯实验c语言编程,51单片机编程:教你实现双机串行通信功能
  14. 白宁超计算机科学院,基于主动学习的传统中医症状本体构建方法研究综述.PDF...
  15. 超级简单的Python爬虫教程,python爬虫菜鸟教程官网
  16. Python调用OpenCV实现图像平滑处理
  17. Adobe cc版安装
  18. 高校GIS系统有何作用?
  19. python英文翻译-python中英文翻译
  20. 蓝牙5.2协议、主从一体、低功耗、工业级蓝牙模组BLE105新品上市

热门文章

  1. mysql动态规划_关于动态规划的描述,不正确的是( )
  2. WooCommerce最新2.3.10汉化简体中文版语言包mo免费下载
  3. 什么是VOIP-网络电话名词详解
  4. 简化SQL式计算之行间计算
  5. Java里鲜为人知的“机器人”类库
  6. run和start区别
  7. sklearn中transform和fit_transform的区别(解决中文向量化特征不一致问题)
  8. vue使用el-tabs实现标签页(内存+vuex)
  9. 通讯录联系人姓名排序
  10. 航空航天空气动力学高性能计算解决方案