Flutter音频元数据提取插件audio_metadata_extractor的使用

发布于 1周前 作者 wuwangju 来自 Flutter

Flutter音频元数据提取插件audio_metadata_extractor的使用

audio_metadata_extractor 是一个非常快速且易于使用的音频文件元数据提取库。它支持从 .mp3, .m4a, .m4bm, .aac, .mp4, .flac 等格式的音频文件中提取元数据,并且优化了网络操作(最少的文件读取次数)。

示例

示例1:从本地文件提取元数据

void main() async {
    // 指定要读取的文件路径
    final file = File("./audio.flac");
    // 使用AudioMetadata.extract方法从文件中提取元数据
    final metadata = await AudioMetadata.extract(file);
    // 检查是否成功提取到元数据
    if (metadata != null) {
        // 打印提取到的元数据信息
        print("专辑: ${metadata.album}");
        print("主要艺术家: ${metadata.firstArtists}");
        print("次要艺术家: ${metadata.secondArtists}");
        print("曲目名称: ${metadata.trackName}");
        print("作曲者: ${metadata.composer}");
        print("封面大小: ${metadata.coverData?.length} 字节");
    } else {
        print("未能提取到元数据");
    }
}

示例2:从URL提取元数据

void main() async {
    // 文件格式必须确定
    final filename = "01.mp3";
    // 指定要下载的音频文件的URL
    final url = Uri.parse("https://downloader.disk.bestaudio.music/path/to/your/file/?id=[file_id]");
    // 使用AudioMetadata.extractFromUri方法从URL中提取元数据
    final metadata = await AudioMetadata.extractFromUri(url, filename: filename);
    // 检查是否成功提取到元数据
    if (metadata != null) {
        // 打印提取到的元数据信息
        print("专辑: ${metadata.album}");
        print("主要艺术家: ${metadata.firstArtists}");
        print("次要艺术家: ${metadata.secondArtists}");
        print("曲目名称: ${metadata.trackName}");
        print("作曲者: ${metadata.composer}");
        print("封面大小: ${metadata.coverData?.length} 字节");
    } else {
        print("未能提取到元数据");
    }
}

示例3:从其他来源(如Samba或FTP文件)提取元数据

void main() async {
    // 文件格式必须确定
    final filename = "01.mp3";
    // 实现RandomAccessFile接口以读取自定义文件源
    RandomAccessFile file = CustomRandomAccessFile();
    // 使用AudioMetadata.extractFromRandomAccessFile方法从自定义文件源中提取元数据
    final metadata = await AudioMetadata.extractFromRandomAccessFile(file, filename: filename);
    // 检查是否成功提取到元数据
    if (metadata != null) {
        // 打印提取到的元数据信息
        print("专辑: ${metadata.album}");
        print("主要艺术家: ${metadata.firstArtists}");
        print("次要艺术家: ${metadata.secondArtists}");
        print("曲目名称: ${metadata.trackName}");
        print("作曲者: ${metadata.composer}");
        print("封面大小: ${metadata.coverData?.length} 字节");
    } else {
        print("未能提取到元数据");
    }
}

更多关于Flutter音频元数据提取插件audio_metadata_extractor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter音频元数据提取插件audio_metadata_extractor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用audio_metadata_extractor插件来提取音频元数据的示例代码。首先,你需要确保已经在你的Flutter项目中添加了该插件。如果还没有添加,可以在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  audio_metadata_extractor: ^最新版本号  # 请替换为插件的最新版本号

然后运行flutter pub get来安装依赖。

一旦依赖安装完毕,你可以按照以下步骤在Flutter应用中使用该插件来提取音频文件的元数据。

1. 导入插件

在你的Dart文件中(比如main.dart),首先导入插件:

import 'package:audio_metadata_extractor/audio_metadata_extractor.dart';
import 'package:flutter/material.dart';

2. 定义一个方法来提取元数据

接下来,定义一个方法来处理音频文件的元数据提取:

Future<void> extractAudioMetadata(String filePath) async {
  try {
    var metadata = await AudioMetadataExtractor.extractMetadata(filePath);
    
    // 打印或处理元数据
    print("Title: ${metadata.title}");
    print("Artist: ${metadata.artist}");
    print("Album: ${metadata.album}");
    print("Duration: ${metadata.duration}");
    print("Bitrate: ${metadata.bitrate}");
    // 根据需要打印或处理其他元数据

  } catch (e) {
    print("Error extracting metadata: $e");
  }
}

3. 在UI中调用该方法

你可以使用一个按钮来触发元数据提取,并在UI中显示结果。例如:

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Audio Metadata Extractor Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('Choose an audio file to extract metadata.'),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () async {
                  // 这里你需要选择音频文件的逻辑,比如使用文件选择器
                  // 示例:选择一个硬编码的文件路径(实际项目中应使用文件选择器)
                  String filePath = '/path/to/your/audio/file.mp3';
                  await extractAudioMetadata(filePath);
                },
                child: Text('Extract Metadata'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

注意:在实际应用中,你应该使用文件选择器(如file_picker插件)来让用户选择音频文件,而不是硬编码文件路径。

4. 添加文件选择器(可选)

如果你需要让用户选择文件,可以添加file_picker插件。首先,在pubspec.yaml中添加依赖:

dependencies:
  file_picker: ^最新版本号  # 请替换为插件的最新版本号

然后,在你的Dart文件中导入并使用它:

import 'package:file_picker/file_picker.dart';

// ...

ElevatedButton(
  onPressed: () async {
    FilePickerResult? result = await FilePicker.platform.pickFiles(
      type: FileType.audio,
    );

    if (result != null && result.files.isNotEmpty) {
      File file = File(result.files.first.path!);
      await extractAudioMetadata(file.path);
    }
  },
  child: Text('Select Audio File and Extract Metadata'),
),

这样,用户就可以通过文件选择器选择音频文件,并提取其元数据了。

希望这些代码示例能帮助你在Flutter项目中成功使用audio_metadata_extractor插件来提取音频元数据。

回到顶部