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

Posted

技术标签:

【中文标题】如何在 Flutter 中将 GIF 转换为 mp4 视频?【英文标题】:How to convert GIF to a mp4 video in Flutter? 【发布时间】:2021-10-20 17:36:11 【问题描述】:

使用 flutter_ffmpeg 或任何其他包。

【问题讨论】:

【参考方案1】:

方法一:

使用flutter_ffmpeg 真的很简单,你可以用这个包做很多其他的事情。

要设置软件包,请将其添加到 pubspec.yaml

dependencies:
  flutter_ffmpeg: ^0.4.2

将此添加到您的build.gradle 位于此处的android/build.gradle

ext 
    flutterFFmpegPackage  = "min"

终于在你的代码中

import 'package:flutter_ffmpeg/flutter_ffmpeg.dart';
  ...
  ...
  final FlutterFFmpeg _flutterFFmpeg = FlutterFFmpeg();
  final String inputFile = ".../input.gif"; //path of the gif file.
  final String outputFile = ".../output.mp4"; //path to export the mp4 file.

  await _flutterFFmpeg
        .execute("-f gif -i $inputFile $outputFile")
        .then((rc) => print("FFmpeg process 1 exited with rc $rc"));

注意:如果您要导出应用目录以外的任何位置,则必须扫描该文件,否则您将无法使用该文件。

方法二:

如果您只想将.gif 转换为.mp4,那么您只需将.gif 重命名为.mp4 即可节省大量空间,并且它会起作用。您还可以将 同一文件.mp4 重命名为 .gif。但是,如果您想将原始的.mp4 文件转换为.gif,则此方法不起作用。

以下是如何重命名文件的示例:

  Directory appDocDir = await getApplicationDocumentsDirectory();
  String appDocPath = appDocDir.path;
  //Let's assume that "$appDocPath/awesome.gif" is the path of the file.
  await File("$appDocPath/awesome.gif").rename("$appDocPath/awesome.mp4");

注意:您必须在rename() 中输入文件的完整路径。

您可以再次将同一个文件重命名为.gif,这样就可以了。但是,如果您要转换从未从 .gif 转换的 .mp4 文件,此方法将不起作用。

【讨论】:

感谢您的回答,但您能否应用更多关于如何重命名文件的详细信息和代码? 重命名时出现此错误:OS Error: No such file or directory, errno = 2 您确定输入的文件路径正确吗?

以上是关于如何在 Flutter 中将 GIF 转换为 mp4 视频?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将动画 .gif 转换为 .webm 格式?

Python:将 GIF 转换为视频(mp4)

使用 Python 将 MP4视频 转换为GIF动画

如何在 Flutter 中将 XFile 转换为文件

如何在 Flutter 中将图像转换为文件?

如何在 Flutter 中将 TextEditingController 转换为 String?