如何提取Dart / Flutter视频元数据

时间:2019-03-05 05:42:45

标签: dart flutter

我正在开发一个Flutter演示应用程序。我想在手机存储中使用有关视频的元数据。我能够提取该视频的路径,但不知道如何在dart / flutter中提取其元数据。

我需要以下元数据:

  1. 视频时长
  2. 视频名称
  3. 视频大小
  4. 拍摄视频时

3 个答案:

答案 0 :(得分:1)

在FLutter中获取视频创建时间的一种方法是使用flutter_ffmpeg插件。

  1. 将其添加到pubspec.yaml

    dependencies:
       flutter_ffmpeg: ^0.3.0
    
  2. 获取视频的文件路径,例如使用file_picker

    File pickedFile = await FilePicker.getFile(); 
    
  3. 使用ffmpeg通过视频路径获取视频的元数据:

     final FlutterFFprobe flutterFFprobe = FlutterFFprobe();
     MediaInformation mediaInformation = await flutterFFprobe.getMediaInformation(pickedFile.path);
     Map<dynamic, dynamic> mp = mediaInformation.getMediaProperties();
     String creationTime = mp["tags"]["creation_time"];
     print("creationTime: $creationTime");
    

在控制台中,您将获得如下内容:

I/flutter (13274): creationTime: 2020-09-24T17:59:24.000000Z

除了创建时间外,还有其他有用的细节: enter image description here

注意:将此插件添加到您的应用中会增加最终apk的权重!

答案 1 :(得分:0)

您可以使用video player plugin官方的VideoPlayerController.file构造函数(由Google官方小组维护,因此您不必担心它的未来和稳定性)来访问文件并获取安装软件包后,会显示以下元信息:

首先,这是您的VideoPlayerController

 VideoPlayerController controller = new VideoPlayerController.file('');//Your file here
  1. 持续时间:

    controller.value.duration ;
    
  2. 视频名称,您应该已经拥有该名称,因为您可以到达文件路径并将其传递给播放器构造函数。

3。视频大小:

    controller.value.size ;

4。至于拍摄视频的时间,我对此无能为力。您必须找到另一种解决方案。

答案 2 :(得分:0)

您的代码是正确的Mazin Ibrahim,您只需对其进行初始化。将来的值将返回所有详细信息。

Future getVideo() async {

   await MultiMediaPicker.pickVideo(source: ImageSource.gallery).then((video){

     File _video = video;
     VideoPlayerController fileVideocontroller = new VideoPlayerController.file(_video)
     ..initialize().then((_) {

       debugPrint("========"+fileVideocontroller.value.duration.toString());
     });
   });
}