fluttertpc_video_compress:基于 Flutter 的视频处理库项目

用户可通过该项目实现视频压缩、音频移除、缩略图生成等功能,确保视频在多平台兼容。项目采用100%原生代码,无需FFMPEG,以MP4容器和AAC音频编码保证兼容性,支持Android、iOS及MacOS平台。【此简介由AI生成】

分支2Tags1
文件最后提交记录最后更新时间
add:添加仓库用户 Signed-off-by: zhanhai <zhanhai1@h-partners.com> 18 天前
rollback transcoder version to 0.9.1 3 年前
feat: 修改video_player依赖版本, 支持flutter ohos 3.35.8版本 Signed-off-by: wuleilei3 <wuleilei3@h-partners.com> 3 个月前
Bug fix can't cancelCompression on iOS. 3 年前
fix import Signed-off-by: yaopengfei <yaopengfei@kaihong.com> 1 年前
[Resolution Presets] Support for resolution presets 4 年前
指定转码后的视频帧像素格式是yuv420p,音频是AAC格式。 Signed-off-by: 代青飞 <daiqinghui2@h-partners.com> 10 个月前
update to 3.0.0 5 年前
docs: update .all-contributorsrc [skip ci]5 年前
适配ohos TODO:性能问题 Signed-off-by: yaopengfei <yaopengfei@kaihong.com> 1 年前
initial release 6 年前
bump to 3.1.2 3 年前
补充COMMITTERS和README.OpenSource Signed-off-by: huangxiaoyao <976125628@qq.com> 1 年前
initial release 6 年前
modify OAT.xml Signed-off-by: zhongluping <278527840@qq.com> 23 天前
feat: 修改video_player依赖版本, 支持flutter ohos 3.35.8版本 Signed-off-by: wuleilei3 <wuleilei3@h-partners.com> 3 个月前
feat: 修改video_player依赖版本, 支持flutter ohos 3.35.8版本 Signed-off-by: wuleilei3 <wuleilei3@h-partners.com> 3 个月前
补充COMMITTERS和README.OpenSource Signed-off-by: huangxiaoyao <976125628@qq.com> 1 年前
update to 3.1.0 4 年前
modify OAT.xml Signed-off-by: zhongluping <278527840@qq.com> 23 天前
适配ohos TODO:性能问题 Signed-off-by: yaopengfei <yaopengfei@kaihong.com> 1 年前

video_compress

一款轻量高效的视频处理库,支持视频压缩、音频分离、缩略图生成,并能确保视频全平台兼容。
采用100%原生代码实现,摒弃了速度缓慢、体积臃肿且受GNU协议限制的FFMPEG方案。
特别优化了跨平台兼容性:谷歌浏览器采用VP8/VP9编码,Safari使用h264格式。传统方案需要双重编码,而本库可一站式解决。
所有输出视频均采用MP4容器封装,搭配AAC音频编码,完美兼容Safari、Firefox、Chrome、Android及iOS平台。

支持ANDROID、IOS及桌面端(当前仅限MacOS)。

目录索引

开始使用

1. 添加依赖

请将以下配置添加至项目的pubspec.yaml文件中:

dependencies:
  video_compress: ^3.1.0

2. 安装

您可以通过命令行安装软件包:

使用 pub 命令:

$  pub get

3. 导入使用

现在,你可以在 Dart 代码中这样调用:

import 'package:video_compress/video_compress.dart';

使用方法

导入模块

import 'package:video_compress/video_compress.dart';
    

视频压缩

MediaInfo mediaInfo = await VideoCompress.compressVideo(
  path,
  quality: VideoQuality.DefaultQuality, 
  deleteOrigin: false, // It's false by default
);

检查压缩状态

VideoQuality.isCompressing

取消压缩

await videoCompress.cancelCompression()

从视频路径获取内存缩略图

final uint8list = await VideoCompress.getByteThumbnail(
  videopath,
  quality: 50, // default(100)
  position: -1 // default(-1)
);

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

final thumbnailFile = await VideoCompress.getFileThumbnail(
  videopath,
  quality: 50, // default(100)
  position: -1 // default(-1)
);

获取媒体信息

final info = await VideoCompress.getMediaInfo(videopath);

删除所有缓存文件

  • 执行此操作将删除所有由本程序生成的文件,这些文件位于'video_compress'目录下。请确保您明确知晓该操作的后果。
await VideoCompress.deleteAllCache()

监听压缩进度

class _Compress extends State<Compress> {

  Subscription _subscription;

  @override
  void initState() {
    super.initState();
    _subscription =
        VideoCompress.compressProgress$.subscribe((progress) {
      debugPrint('progress: $progress');
    });
  }

  @override
  void dispose() {
    super.dispose();
    _subscription.unsubscribe();
  }
}

待办事项

  • 添加视频裁剪功能
  • 为 Android 平台增加取消功能

方法列表

方法名 参数说明 功能描述 返回值
getByteThumbnail String path[视频路径], int quality(1-100)[缩略图质量], int position[从视频指定位置获取缩略图] 从视频path中获取缩略图 Future<Uint8List>
getFileThumbnail String path[视频路径], int quality(1-100)[缩略图质量], int position[从视频指定位置获取缩略图] 从视频path中获取缩略图文件 Future<File>
getMediaInfo String path[视频路径] 获取视频path的媒体信息 Future<MediaInfo>
compressVideo String path[视频路径], VideoQuality quality[压缩视频质量], bool deleteOrigin[是否删除原视频], int startTime[压缩起始时间], int duration[从起始时间开始的压缩时长], bool includeAudio[压缩视频是否包含音频], int frameRate[压缩视频帧率] 对原始视频path进行压缩处理 Future<MediaInfo>
cancelCompression 无参数 取消当前压缩任务 Future<void>
deleteAllCache 无参数 删除'video_compress'生成的所有文件(将清除'video_compress'目录下所有文件) Future<bool>

订阅事件

订阅事件 描述说明 数据流类型
compressProgress$ 订阅压缩进度流 double progress

贡献指南

我们始终欢迎您的贡献!

鸣谢

本项目灵感来源于 flutter_ffmpeg 库。 https://github.com/rurico/flutter_video_compress

项目介绍

用户可通过该项目实现视频压缩、音频移除、缩略图生成等功能,确保视频在多平台兼容。项目采用100%原生代码,无需FFMPEG,以MP4容器和AAC音频编码保证兼容性,支持Android、iOS及MacOS平台。【此简介由AI生成】

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

Swift28.04%
ArkTS27.91%
Dart16.81%
Kotlin13.98%
TypeScript4.72%