我正在开发一个用户可以将视频上传到我们服务器的应用程序。他们可以从自己的画廊中选择视频,所以我想在上传之前先缩小它们。
我想知道是否可以使用Flutter / Dart减小视频文件的大小。谢谢。
答案 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)
安装:
在 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