减少Flutter / Dart中的视频文件大小

时间:2018-08-29 07:40:43

标签: dart flutter

我正在开发一个用户可以将视频上传到我们服务器的应用程序。他们可以从自己的画廊中选择视频,所以我想在上传之前先缩小它们。

我想知道是否可以使用Flutter / Dart减小视频文件的大小。谢谢。

4 个答案:

答案 0 :(得分:2)

我正在使用flutter_ffmpeg插件 详细:

static Future<String> ReduceSizeAndType(videoPath, outDirPath) async {
    assert(File(videoPath).existsSync());

    final arguments = '-y -i $videoPath ' +
        '-preset ultrafast -g 48 -sc_threshold 0 ' +
        '-c:v libx264 -b:v 720k ' +
        '-c:a copy ' +
        '"$outDirPath/file2.mp4"';

    final int rc = await _encoder.execute(arguments);
    assert(rc == 0);

    return outDirPath;
  }

您可以通过增加和减少720k的数量来更改视频的质量和大小。 返回的“ $ outDirPath”是您的输出视频路径。

答案 1 :(得分:0)

您可以尝试在https://pub.dartlang.org中搜索是否存在具有该功能或类似功能的任何包装。

答案 2 :(得分:0)

https://pub.dartlang.org/packages/flutter_ffmpeg非常好,并且有详细记录的说明

import 'package:flutter_ffmpeg/flutter_ffmpeg.dart';

 final FlutterFFmpeg _flutterFFmpeg = new FlutterFFmpeg();

 _flutterFFmpeg.execute("-i file1.mp4 -c:v mpeg4 file2.mp4").then((rc) => print("FFmpeg process exited with rc $rc"));

检查rc代码,如果成功,则打开file2.mp4,这是压缩/处理后的文件。

答案 3 :(得分:0)

使用flutter_video_compress

安装

在 pubspec.yaml 文件中添加 flutter_video_compress 作为依赖项。

用法:

创建实例

final _flutterVideoCompress = FlutterVideoCompress();

从视频路径获取缩略图

final uint8list = await _flutterVideoCompress.getThumbnail(
  file.path,
  quality: 50, // default(100)
  position: -1 // default(-1)
);

从视频路径获取缩略图文件

final thumbnailFile = await _flutterVideoCompress.getThumbnailWithFile(
  file.path,
  quality: 50, // default(100)
  position: -1 // default(-1)
);

将视频转换为 gif

final file = await _flutterVideoCompress.convertVideoToGif(
  videoFile.path,
  startTime: 0, // default(0)
  duration: 5, // default(-1)
  // endTime: -1 // default(-1)
);
print(file.path);

压缩视频

final info = await _flutterVideoCompress.compressVideo(
  file.path,
  quality: VideoQuality.DefaultQuality, // default(VideoQuality.DefaultQuality)
  deleteOrigin: false, // default(false)
);
print(info.toJson().toString());

您可以了解有关此软件包的更多信息here

相关问题