Flutter:如何使用 ffmpeg 从视频中读取数据

Posted

技术标签:

【中文标题】Flutter:如何使用 ffmpeg 从视频中读取数据【英文标题】:Flutter: How to read data from video using ffmpeg 【发布时间】:2020-10-03 23:48:06 【问题描述】:

我正在尝试使用 lib https://pub.dev/packages/flutter_ffmpeg 从视频中获取元数据,

以下代码不适用于 ffmpeg

  Directory appDocDir = await getApplicationDocumentsDirectory();
  String appDocPath = appDocDir.path;
  File file = File('$appDocPath/folder_name/out.mp4');
  final FlutterFFprobe _flutterFFprobe = new FlutterFFprobe();

 _flutterFFprobe.getMediaInformation(file.path).then((info) => print(info));

我该如何解决上述问题?

【问题讨论】:

【参考方案1】:

首先需要文件存储访问权限,然后 ffmpeg lib 可以访问给定路径

添加存储权限

permission_handler: ^5.0.1 // in pubspec.yaml file

在访问视频之前请求运行时权限

    var status = await Permission.storage.status;
          if (status.isUndetermined) 
            // You can request multiple permissions at once.
            Map<Permission, PermissionStatus> statuses = await [
              Permission.storage,
            ].request();
            print(statuses[Permission.storage]); // this must show permission granted. 
          

最后,将它与具有类似存储路径的 ffmpeg 一起使用

          File file = File('/storage/emulated/0/folder_name/out.mp4');
          final FlutterFFprobe _flutterFFprobe = new FlutterFFprobe();

          _flutterFFprobe
              .getMediaInformation(file.path)
              .then((info) => print(info)); // This should print metadata inside of video

【讨论】:

如何获取封面图片(专辑封面)和音频文件的其他属性,如艺术家姓名、歌曲名称、音频文件的总时长等?请帮忙,我被困在这个问题上 2 周了,我在堆栈上发布了问题,但没有得到社区的回应。

以上是关于Flutter:如何使用 ffmpeg 从视频中读取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中将 GIF 转换为 mp4 视频?

Flutter音视频裁剪flutter_ffmpeg踩坑笔记

Flutter 音视频处理FFmpeg

web获取视频图片第一帧

如何在 Dart/flutter 中将视频文件分割成小块?

Flutter FFMPEG 根据视频大小增加处理时间,即使只切割相同大小