我们在播放音频文件时,如MP3格式的音频文件,一些播放器会显示音乐名称专辑名称歌手音乐图像等信息,如下图片所示:

下面介绍使用FFMpeg来获取这些信息。

  1. 使用函数avformat_open_input打开文件,结封装。
  2. 使用函数avformat_find_stream_info查找并添加流信息到Format上下文中。
  3. 使用函数av_dict_get获取文件中的字典信息。

下面是关键部分代码:

1.获取音乐相关信息

获取文件中的信息:

// 打开文件
int result = avformat_open_input(&m_AVFormatContext, fileName.toLocal8Bit().data(), nullptr, nullptr);
if (result != 0 || m_AVFormatContext == nullptr)return false;// 查找流信息,把它存入AVFormatContext中if (avformat_find_stream_info(m_AVFormatContext, nullptr) < 0)return false;int streamsCount = m_AVFormatContext->nb_streams;// 读取详细信息
AVDictionaryEntry *tag = nullptr;
while (tag = av_dict_get(m_AVFormatContext->metadata, "", tag, AV_DICT_IGNORE_SUFFIX))
{QString keyString = tag->key;QString valueString = QString::fromUtf8(tag->value);m_InfoMap.insert(keyString, valueString);
}

这里将信息放到了一个QMap中存储。
下面是我本地的音频文件中的得到的字典信息:

title表示歌曲名,album表示专辑名称,artist表示艺术家(歌手)

2.获取图片

获取图片代码关键部分如下:

int streamsCount = m_AVFormatContext->nb_streams;
for (int i=0; i<streamsCount; ++i)
{if (m_AVFormatContext->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC){AVPacket pkt = m_AVFormatContext->streams[i]->attached_pic;m_InfoImage = QImage::fromData((uchar*)pkt.data, pkt.size);}
}

这里将图片信息存入到QImage类型的名为m_InfoImage的成员变量中。

使用FFMpeg 获取MP3文件中的信息和图片相关推荐

  1. java获取MP3文件的id3信息(包括封面图,歌词,艺术家,标题等)

    MP3结构简单介绍 有时我们会发现MP3文件在电脑上可以显示出封面图,艺术家,标题,唱片集等等信息,这是因为MP3中有ID3标签信息. MP3文件大体上分为三个部分:ID3V2+音频数据+ID3V1 ...

  2. python读取文本中的英文歌_Python 实例分析 - 获取MP3歌曲的Tag信息

    下面利用一个python的实例程序,来学习python.这个程序的目的就是分析出所有MP3文件的Tag信息并输出. 其中遇到一个问题,让我深切感受到python中依靠缩进来控制流程的缺点,不多说,看程 ...

  3. java获取MP3文件信息(歌手,歌名,封面,专辑,时长)

    可以用本地的文件地址测试(令url=文件地址) package com.test.inside.util;import org.jaudiotagger.audio.AudioFileIO; impo ...

  4. jaudiotagger获取MP3文件信息及封面图片

    #jaudiotagger获取MP3文件信息及封面图片 ###maven依赖: <dependency><groupId>org</groupId><arti ...

  5. php读取mp3信息,PHP获取MP3的媒体标签信息

    PHP如何获取MP3的媒体标签信息?本文主要介绍了PHP获取音频文件的相关信息的相关资料.希望对大家有所帮助. 项目需求:现在有一个音频文件上传的功能,在上传后PHP需要获取这个音频文件的相关信息,例 ...

  6. 使用ffmpeg从视频文件中提取音频文件、视频抽帧和切割视频

    目录 ffmpeg下载 使用ffmpeg从视频文件中提取音频文件 批量提取文件夹下多个视频文件的音频 使用ffmpeg从视频文件中提取视频帧 使用ffmpeg将按固定时长将视频切割成多个小片段 将分割 ...

  7. 科大讯飞语音识别(获取音频流文件中文字)

    项目中需要获取视频中的文字, 将过程记录下, 方便以后使用!  为了确保项目在公司内网也能使用语音识别,需要确保内网可以通过HTTP访问dev.voicecloud.cn   该网址不是在浏览器地址栏 ...

  8. c++------------提取文件中的信息

    对于文件比较复杂的时候,为了获取文件中的信息,需要一些比较特殊的函数,比如,getline().replace().atoi,atof等 例子一,读取以下文件中的数据,并保存进一个类里面. 首先,类的 ...

  9. file对象怎样获取文件的长度?_使用FSO对象获取整个文件夹的信息

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十八个专题"FSO对象对文件及文件夹的处理"的第三节"使用FSO对象获取整个文件夹的信息" ...

最新文章

  1. colab找不到模块 no name
  2. visual studio 添加源码目录
  3. SAP Spartacus 登录超链接的 slot 并未出现在 page OCC API 响应里
  4. BeetleX之XRPC远程委托调用
  5. binlog日志_【删库跑路】使用Binlog日志恢复误删的MySQL数据
  6. python 笔记本_Python笔记本
  7. java编程两个超长正整数相减_【每日编程237期】数字分类
  8. 第二个Arduino小车 两轮自平衡
  9. 恩智浦智能车赛。摄像头处理函数。
  10. 红米充电短路 红米note3充电短路 无法充电
  11. TensorFlow学习(11)——卷积神经网络
  12. 正片工艺、负片工艺,这两种PCB生产工艺的差异到底是什么?
  13. 无法运行rc.exe(已解决)
  14. 关于Macbook Pro/Air 键盘输入乱码,重置NVRAM无效
  15. [刷机教程] [Root] S-OFF的同学来Root你的HTC Desire S
  16. 王兴:淘宝为什么还不支持微信支付?
  17. 输出linux内核版本信息,查看linux内核和版本信息
  18. 技术盛会多烧脑? Hyperledger北京Meetup落幕全球创新社区
  19. android在线root,android在线是什么意思上显示
  20. SQL中的关联子查询

热门文章

  1. BAT+华为SP面经,聊一些细节加分项
  2. 求sum=d+dd+ddd+……+dd...d
  3. 数据大屏可视化2-超全的基础图形模板(基础模版)
  4. R语言进行Logistic回归分析
  5. linux服务器 vnpy,centos7.6 搭建vnpy量化交易环境
  6. 字节跳动大规模裁员。。
  7. 太飒!马斯克72岁超模老妈与邓文迪同框:我从不怕老
  8. 实训四:使用Telnet方式管理交换机
  9. TFN 微缆气吹机T500W 吹缆机 配件齐全性价比的首选
  10. Libra天平币项目机制原理与节点功能测试