搜索插件、代码仓与 APP 分类

插件详情v1.0.0

video_compress_plus

Flutter 的轻量级视频处理库。从 Dart 代码中压缩视频、移除音频并获取视频缩略图。

AndroidiOSmacOS
近 30 天下载
39
喜欢数
23
Pub 分数
140

安装插件

flutter pub add video_compress_plus

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个轻量级的 Flutter 包,用于视频处理,使开发者能够直接从 Dart 代码中压缩视频、移除音频轨道并生成缩略图。专为 Android、iOS 和 macOS 设计,简化了 Flutter 应用中的多媒体处理。该包与原生视频处理功能无缝集成,提供高效的设备端视频优化性能。适用于需要离线视频编辑或减小文件大小而无需外部依赖的应用。

适合场景

  • 压缩视频以加快上传速度
  • 从视频文件中移除音频
  • 为视频预览生成缩略图
  • 优化应用中的视频存储
  • 分享前处理视频
  • 减少应用包大小

主要特点

  • 视频压缩
  • 音频移除
  • 缩略图生成
  • 跨平台支持
  • 原生集成
  • 最小设置

适合对象

  • 媒体密集型应用
  • 社交媒体应用
  • 视频编辑工具
  • 文件管理应用
  • 离线视频处理器
  • 针对移动设备和桌面的应用程序

使用建议

  • 需要 Android 和 iOS 的原生权限
  • 仅限基本视频操作
  • 可能因平台特定行为而异
  • 没有高级视频编辑功能
  • 依赖于底层原生库
  • 不适用于实时视频处理

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

video_compress

Compress videos, remove audio, manipulate thumbnails, and make your video compatible with all platforms through this lightweight and efficient library. 100% native code was used, we do not use FFMPEG as it is very slow, bloated and the GNU license is an obstacle for commercial applications. In addition, google chrome uses VP8/VP9, safari uses h264, and most of the time, it is necessary to encode the video in two formats, but not with this library. All video files are encoded in an MP4 container with AAC audio that allows 100% compatibility with safari, mozila, chrome, android and iOS.

Works on ANDROID, IOS and desktop (just MacOS for now).

Table of Contents

Lets Get Started

1. Depend on it

Add this to your package's pubspec.yaml file:

dependencies:
  video_compress: 1.0.0
    git: https://github.com/kamaravichow/VideoCompressPlus.git
2. Install it

You can install packages from the command line:

with pub:

$  pub get
3. Import it

Now in your Dart code, you can use:

import 'package:video_compress_plus/video_compress_plus.dart';

How to use

Imports
import 'package:video_compress_plus/video_compress_plus.dart';
    

Video compression

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

Check compress state

VideoQuality.isCompressing

Get memory thumbnail from VideoPath

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

Get File thumbnail from VideoPath

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

Get media information

final info = await VideoCompress.getMediaInfo(videopath);

delete all cache files

  • Delete all files generated by this will delete all files located at 'video_compress', you shoule ought to know what are you doing.
await VideoCompress.deleteAllCache()

Listen the compression progress

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();
  }
}
TODO
  • Add the trim video function
  • Add cancel function to Android

Methods

Functions Parameters Description Returns
getByteThumbnail String path[video path], int quality(1-100)[thumbnail quality], int position[Get a thumbnail from video position] get thumbnail from video path Future<Uint8List>
getFileThumbnail String path[video path], int quality(1-100)[thumbnail quality], int position[Get a thumbnail from video position] get thumbnail file from video path Future<File>
getMediaInfo String path[video path] get media information from video path Future<MediaInfo>
compressVideo String path[video path], VideoQuality quality[compressed video quality], bool deleteOrigin[delete the origin video], int startTime[compression video start time], int duration[compression video duration from start time], bool includeAudio[is include audio in compressed video], int frameRate[compressed video frame rate] compression video at origin video path Future<MediaInfo>
cancelCompression none cancel compressing Future<void>
deleteAllCache none Delete all files generated by 'video_compress' will delete all files located at 'video_compress' Future<bool>

Subscriptions

Subscriptions Description Stream
compressProgress$ Subscribe the compression progress steam double progress

Contribute

Contributions are always welcome!

acknowledgment

Inspired by the flutter_ffmpeg library. https://github.com/rurico/flutter_video_compress

所属分类

源码仓库

使用此插件的项目

暂无相关数据。