如何在抖动中获取音频文件的元数据? 示例演示

问题描述

音频文件的元数据是与音频相关的应用程序中最重要的事情。借助元数据,我们可以使用标题,作者姓名,艺术家姓名,专辑名称,封面图像和其他详细信息,因此我们可以在应用程序中使用这些详细信息列出音乐项目,并能够相应地创建不同的组或分区。例如,如果我们创建音乐应用程序,则如果6首歌曲是来自《幻想龙》,另外6首歌曲是来自一个共和国,还有一些(如果有些《幻想龙》的歌曲是来自不同专辑),那么我们可以根据某些元数据标准对它们进行分类。

在assets_audio_player中,我们可以手动添加元数据,但是无法从文件中获取现有元数据。据我了解,通过探索pub.dev中的其他音频包,大多数其他包都不支持。

解决方法

找到了可能有助于以下目的的软件包:https://pub.dev/packages/id3/(假设您正在使用MP3文件;您没有提及格式)

编辑:这是另一个https://pub.dev/packages/dart_tags

,

这是一个 Flutter 包,可以读取各种音频文件的元数据,甚至从 URL 中读取元数据。

https://github.com/alexmercerind/flutter_media_metadata

您可以按如下方式使用它:

示例

import 'package:flutter_media_metadata/flutter_media_metadata.dart';

var retriever = new MetadataRetriever();
await retriever.setFile(new File('/storage/emulated/0/Music/music.aac'));
Metadata metadata = await retriever.metadata;

metadata.trackName;
metadata.trackArtistNames;
metadata.albumName;
metadata.albumArtistName;
metadata.trackNumber;
metadata.albumLength;
metadata.year;
metadata.genre;
metadata.authorName;
metadata.writerName;
metadata.discNumber;
metadata.mimeType;
metadata.trackDuration;
metadata.bitrate;

retriever.albumArt;

await retriever.setUri(new Uri.https('www.example.com','/audio.MP3',{}));

Map<String,dynamic> map = await metadata.toMap();

演示

@FloatingRock 提到的包是用 Dart 本身写的,所以速度慢。并且仅支持 MP3 标签(即仅 ID3v1/ID3v2)。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...