Flutter ID3标签解析插件zooper_flutter_id3的使用
Flutter ID3标签解析插件zooper_flutter_id3的使用
zooper_flutter_id3
是用Dart编写的最佳ID3标签读写库。据我所知,这也是唯一支持ID3版本1.0、1.1、2.2、2.3和2.4的库。
注意 此包目前处于Alpha阶段。尽管它应该按预期工作,但我们建议保留您的原始文件并检查写入的文件是否格式正确。
注意 并非所有帧都已支持,但它们将以读取时的方式写入,因此不会丢失数据。如果您希望支持特定帧,请提交Pull请求或提出问题 [这里]。
Zooper
zooper
家族是一系列用Dart/Flutter和C#编写的有用的开源包,包含辅助类和对其他库的包装。
您可以查看其他包 [这里]。
开始使用
在您的 pubspec.yaml
文件中添加以下行:
zooper_flutter_id3: <latest>
并在您的 Dart 类中导入:
import 'package:zooper_flutter_id3/zooper_flutter_id3.dart';
使用方法
解码
ZooperAudioFile
在读取后存储Id3v2和Id3v1标签,还包括音频数据本身。
您可以读取一个文件(您需要自行检查文件的兼容性)如下所示:
final file = File(filePath);
final bytes = await file.readAsBytes();
final audioFile = ZooperAudioFile.decode(bytes);
读取帧
读取文件后,您可以轻松访问帧:
final frame = audioFile.id3v2?.getFrameByNameOrNull(FrameName.track);
但这不是检索数据的推荐方式。此包以模型为导向开发。 这意味着每个帧都有一个模型,您可以获取和编辑这些模型。 例如:
var frameContent = audioFile.id3v2?.getContentGroupDescriptionModel();
frameContent?.value = 'Hello World';
添加帧
要添加新帧,有一个辅助方法:
// 添加新帧
audioFile.id3v2?.addFrame(frame);
这假定您已经创建了一个帧。请注意正确连接帧头与帧内容, 否则将导致文件损坏。 更好的方法是使用辅助方法:
// 如果可能,添加新艺术家帧
audioFile.id3v2?.addArtist('This is an artist test');
删除帧
// 删除特定帧
audioFile.id3v2?.deleteFrame(frame);
// 删除具有给定标识符的所有帧
audioFile.id3v2?.deleteFramesByName(FrameName.title);
更多关于Flutter ID3标签解析插件zooper_flutter_id3的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter ID3标签解析插件zooper_flutter_id3的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
zooper_flutter_id3
是一个用于解析音频文件中的 ID3 标签的 Flutter 插件。ID3 标签通常包含音频文件的元数据,如标题、艺术家、专辑、年份等信息。通过这个插件,你可以轻松地读取这些信息并在 Flutter 应用中使用。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 zooper_flutter_id3
插件的依赖:
dependencies:
flutter:
sdk: flutter
zooper_flutter_id3: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装插件。
使用插件
以下是一个简单的示例,展示如何使用 zooper_flutter_id3
插件来解析音频文件的 ID3 标签。
import 'package:flutter/material.dart';
import 'package:zooper_flutter_id3/zooper_flutter_id3.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: ID3ParserScreen(),
);
}
}
class ID3ParserScreen extends StatefulWidget {
[@override](/user/override)
_ID3ParserScreenState createState() => _ID3ParserScreenState();
}
class _ID3ParserScreenState extends State<ID3ParserScreen> {
ID3Tag? id3Tag;
Future<void> parseID3() async {
// 替换为你的音频文件路径
String filePath = 'path/to/your/audio/file.mp3';
try {
ID3Tag tag = await ZooperFlutterId3.parse(filePath);
setState(() {
id3Tag = tag;
});
} catch (e) {
print('Error parsing ID3 tag: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ID3 Tag Parser'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (id3Tag != null)
Column(
children: [
Text('Title: ${id3Tag!.title}'),
Text('Artist: ${id3Tag!.artist}'),
Text('Album: ${id3Tag!.album}'),
Text('Year: ${id3Tag!.year}'),
Text('Track: ${id3Tag!.track}'),
Text('Genre: ${id3Tag!.genre}'),
],
),
ElevatedButton(
onPressed: parseID3,
child: Text('Parse ID3 Tag'),
),
],
),
),
);
}
}