v-modal/vmodal_sdk_flutter

V- Modal AI: Visual Video / Image Search - Flutter Video SDK

VModal for Flutter とは?

VModal は、モバイルアプリ(Android / iOS)にマルチモーダル動画検索とアップロード機能を追加できる Flutter SDK です。VModal クラウドサービスにアプリを接続し、動画コンテンツをインデックス化して、以下の方法で検索できるようにします。

  • 自然言語による説明(例:「赤いジャケットを着たサイクリスト」)
  • 音声テキスト変換(音声)と画面上のテキスト
  • 視覚的な類似性(画像フレーム)

SDK は、ネットワーキング、ストリーミングアップロード、進捗レポート、キャンセルトークン、型付きレスポンスモデルをすべて処理し、UI は完全にユーザーの制御下に置きます。


コア機能

機能 説明
セマンティック動画・画像検索 平易な英語で動画ライブラリをクエリします。結果にはタイムスタンプと類似度距離が含まれます。
音声・テキスト検索 バックエンドによって抽出された発話された単語や画面上のキャプションを検索します。
ストリーミングアップロード ファイル全体をメモリに読み込むことなく、ファイルピッカーやカメラから直接動画をアップロードします。進捗状況は Dart の Stream として公開されます。
キャンセル 操作ごとのキャンセルトークンを使用すると、画面が閉じられたときにアップロードや検索を中止できます。
型付き API すべてのリクエスト/レスポンスオブジェクトは Dart で強く型付けされているため、統合は簡単です。
認証の柔軟性 シンプルなランタイム API キー、またはユーザーごとの分離のために自社バックエンドから取得した短命トークンを使用します。
セッションとスコープ管理 VModalProject を作成し、それをコレクション/ストリーム(例:ユーザーごとのライブラリ)に スコープ し、分離された操作を実行します。
ライフサイクル対応 モバイルのライフサイクル向けに設計されています。認証情報のローテーション、セッションのクローズ、リソースの決定的なクリーンアップが可能です。

はじめに(クイックステップ)

  1. パッケージを追加します
    dependencies:
      vmodal_sdk_flutter: ^1.2.3   # または pub.dev の最新バージョン
    
  2. API キーを取得します – https://vmodal.com/page/contact.ts でリクエストしてください。
  3. Dart コードで SDK を設定します:
    import 'package:vmodal_sdk_flutter/vmodal_sdk_flutter.dart';
    
    final apiKeyProvider = MutableApiKeyProvider('YOUR_RUNTIME_API_KEY');
    final project = VModal.configure(
      projectId: 'food_app',
      apiKeyProvider: apiKeyProvider,
    );
    final favorites = project.scope(
      collectionName: 'user_123',
      streamName: 'favorites',
    );
    
  4. 動画をアップロードします(進捗状況はコンソールに表示されます):
    final task = favorites.upload(
      UploadSource.fromFile(File('path/to/video.mp4')),
    );
    task.progress.listen((p) => print('Uploading ${p.percent}%'));
    final uploaded = await task.result;
    print('Uploaded as ${uploaded.fileName}');
    
  5. アップロードしたコレクションを検索します:
    final results = await favorites.search(
      'the cyclist crossing the bridge at sunset',
      options: const ScopedSearchOptions(
        searchSources: ['image'],
        limit: 20,
      ),
    );
    for (final hit in results.videoHits) {
      print('${hit.fileName} @ ${hit.playbackOffsetMs}ms');
    }
    
  6. アプリがシャットダウンするときにリソースを閉じます:
    await project.close();
    

リポジトリには、アップロード → インデックス → 検索 → 画像プレビューというフロー全体を示すフル機能のサンプルアプリ(example/01_full_app)も含まれています。


典型的なユースケース

  • コンシューマー向け動画アプリ – ユーザーが自然言語で個人の動画ライブラリを検索できるようにします。
  • セキュリティ / CCTV ダッシュボード – カメラクリップをアップロードしてタグ付けし、後でオブジェクト、時間範囲、または発話された単語で瞬間を取得します。
  • E コマース製品ビデオカタログ – 製品デモをインデックス化し、買い物客が特定の機能(「電話のカメラモードを表示」など)を見つけられるようにします。
  • エンタープライズ知識ベース – 会議の録画を保存し、従業員がキーワードやスピーカーで瞬間を見つけられるようにします。

ドキュメントとサポート


ライセンス

MIT – 商用またはオープンソースの Flutter アプリで SDK を自由に使用、変更、配布できます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト