flutter如何获取媒体文件的元数据

在Flutter中如何获取媒体文件(如图片、视频)的元数据?例如文件的创建时间、修改时间、尺寸、分辨率等信息。是否有推荐的插件或方法可以实现这一功能?希望能提供具体的代码示例和实现步骤。

2 回复

使用flutter_ffmpegmedia_info插件。通过MediaInfo类解析文件路径,获取如时长、分辨率等元数据。示例代码简单,需添加依赖并处理权限。

更多关于flutter如何获取媒体文件的元数据的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中获取媒体文件元数据,推荐使用以下方法:

1. 使用 media_info 包(推荐)

安装依赖:

dependencies:
  media_info: ^0.9.0

使用示例:

import 'package:media_info/media_info.dart';

// 获取本地文件元数据
Future<void> getMediaMetadata() async {
  try {
    MediaInfo mediaInfo = await MediaInfo.getMediaInfo('/path/to/your/file.mp4');
    
    print('文件路径: ${mediaInfo.path}');
    print('文件大小: ${mediaInfo.fileSize} bytes');
    print('时长: ${mediaInfo.duration} ms');
    print('视频编码: ${mediaInfo.videoCodec}');
    print('音频编码: ${mediaInfo.audioCodec}');
    print('分辨率: ${mediaInfo.width} x ${mediaInfo.height}');
    print('比特率: ${mediaInfo.bitRate}');
    
  } catch (e) {
    print('获取元数据失败: $e');
  }
}

2. 使用 file_picker + 自定义解析

对于简单的文件信息:

import 'package:file_picker/file_picker.dart';

Future<void> pickAndGetFileInfo() async {
  FilePickerResult? result = await FilePicker.platform.pickFiles();
  
  if (result != null) {
    PlatformFile file = result.files.first;
    
    print('文件名: ${file.name}');
    print('文件大小: ${file.size} bytes');
    print('文件路径: ${file.path}');
    print('扩展名: ${file.extension}');
  }
}

主要特性

  • 支持格式: MP4, AVI, MKV, MP3 等常见媒体格式
  • 获取信息: 时长、分辨率、编码格式、比特率等
  • 平台支持: Android 和 iOS

注意事项

  • 需要文件读取权限
  • 某些格式可能需要特定编解码器支持
  • 建议在异步函数中调用

media_info 包是目前最完整的解决方案,适合大多数媒体文件元数据获取需求。

回到顶部