カテゴリー・パッケージ・リポジトリを検索

パッケージ詳細v3.1.4

video_compress

Flutter用の軽量な動画操作ライブラリ。Dartコードから動画を圧縮し、音声を削除し、動画サムネイルを取得します。

AndroidiOSmacOS
30日間ダウンロード
22.4万
いいね数
748
Pub ポイント
140

パッケージをインストール

flutter pub add video_compress

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Dartコードから直接動画の圧縮、オーディオトラックの削除、サムネイルの生成を可能にする軽量なFlutterパッケージです。Android、iOS、macOSでの効率的なマルチメディア処理を目的としており、ネイティブプラットフォームコードを必要とせずに一般的な動画処理タスクを簡素化します。デバイス内での動画最適化およびプレビュー生成が必要なアプリに最適です。

用途

  • ストレージ用に大きな動画ファイルを圧縮する
  • 動画からオーディオを削除する
  • 動画ファイルからサムネイルを生成する
  • アップロード用に動画を最適化する
  • リアルタイムで動画を処理する
  • 圧縮されたメディアでアプリのサイズを小さくする

主な機能

  • 動画圧縮サポート
  • オーディオ削除機能
  • サムネイルの抽出
  • クロスプラットフォーム互換性
  • シンプルな Dart API
  • 軽量で高速

適している対象

  • メディア重視のアプリ
  • 動画共有プラットフォーム
  • コンテンツ作成ツール
  • 動画アップロード付きのモバイルアプリ
  • オフライン動画処理を必要とするアプリ
  • 最小限のネイティブコードを求める開発者

注意事項

  • ネイティブプラットフォームの権限が必要です
  • 低価格端末でのパフォーマンスに影響する可能性があります
  • 基本的な動画操作に限定
  • 下位のネイティブライブラリに依存しています
  • 複雑な動画編集には適していません
  • ファイルサイズの削減は、元の品質に依存します

元の 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: ^3.1.0
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/video_compress.dart';

How to use

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

Video compression

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

Check compress state

VideoCompress.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

カテゴリー

ソースリポジトリ

このパッケージを使用しているプロジェクト