Flutterで動画再生パッケージを比較:fvp、media_kit、video_player
Flutterアプリで動画再生機能を実装する際、適切なパッケージの選択に迷うことがあります。2025年5月現在、主要な動画再生パッケージ「fvp」「media_kit」「video_player」の特徴と違いを詳しく比較してみましょう。
各パッケージの概要
video_player 🔗
video_playerはFlutter公式の動画再生プラグインです。シンプルで使いやすいAPIを提供し、基本的な動画再生機能の実装に適しています。
主な特徴:
• Flutter公式プラグイン
• Android、iOS、macOS、Webに標準対応
• ネットワーク動画とローカルファイルの再生に対応
• 再生・一時停止、音量調整、シーク操作などの基本機能を提供
• シンプルなAPIで導入が容易
制限事項:
• デスクトッププラットフォーム(Windows、Linux)は公式サポート対象外
• 機能が基本的なものに限定
• シーク操作が遅延する場合がある
fvp 🔗
fvpはvideo_playerの拡張プラグインであり、すべてのデスクトップおよびモバイルプラットフォームをサポートしています。
主な特徴:
• video_playerの拡張機能として動作し、既存のvideo_playerコードをほぼそのまま利用可能
• Windows、macOS、Linux、iOS、Androidに完全対応
• ハードウェアアクセラレーションによる高性能再生
• プラットフォーム最適化されたレンダラー(Windows:d3d11、macOS/iOS:metal、Linux/Android:OpenGL)
• Dolby Vision対応
• FFmpegベースの多様なフォーマット対応
• 透過動画(HEVC、VP8、VP9)対応
• スナップショット、録画、外部字幕などの拡張機能
• 高速なシーク操作
制限事項:
• プラグインサイズが大きい(約10MB/アーキテクチャ)
• Flutter 3.19以降が必要(Android minSdk 21要件)
media_kit 🔗
media_kitはDartを主体として設計された、すべてのプラットフォームで一貫したAPIを提供するクロスプラットフォームメディアプレーヤーです。
主な特徴:
• Android、iOS、macOS、Windows、Linux、Webに完全対応
• 実装の80%以上が純粋なDart(FFI)で記述され、プラットフォーム間で共有
• 多様なコーデックに対応
• 4K/8K 60FPSの高解像度再生に対応
• 複数のFHD動画の同時再生が可能
• プレイリスト機能、トラック選択、字幕スタイリングなどの高度な機能
• モジュール式設計(必要な機能のみ選択可能)
制限事項:
• パッケージが複数に分かれており、セットアップがやや複雑
• 特定のケースでシーク操作の遅延が報告されている
比較表
機能/特徴 | video_player | fvp | media_kit |
対応プラットフォーム | Android、iOS、macOS、Web | Windows、macOS、Linux、Android、iOS | Android、iOS、macOS、Windows、Linux、Web |
公式サポート | ✅ | ❌ | ❌ |
ハードウェアアクセラレーション | 限定的 | ✅ | ✅ |
高解像度サポート | 限定的 | ✅ | ✅(4K/8K) |
コーデック対応範囲 | 基本的 | 広範囲(FFmpeg) | 広範囲 |
API使いやすさ | シンプル | video_playerと互換 | 柔軟だが複雑 |
特殊機能 | 基本的 | スナップショット、録画、外部字幕 | プレイリスト、字幕スタイリング |
シーク性能 | 遅い場合あり | 高速 | 遅い場合あり |
パッケージサイズ | 小 | 中(+10MB/アーキ) | 中 |
最終更新 | 最新 | 2025年4月14日 | 最新 |
選択ガイド
video_playerを選ぶべき場合
- モバイルとWebのみをターゲットにしている
- シンプルな動画再生機能だけが必要
- 公式サポートを重視する
- 最小限のコードで実装したい
fvpを選ぶべき場合
- デスクトッププラットフォームもサポートする必要がある
- 既存のvideo_playerコードを活用したい
- ハードウェアアクセラレーションによる高性能再生が必要
- 特殊なフォーマットやコーデックのサポートが必要
- スナップショットや録画などの拡張機能を使いたい
- 高速なシーク操作が重要
media_kitを選ぶべき場合
- すべてのプラットフォームで一貫したAPIを使いたい
- 4K/8K動画の再生や複数動画の同時再生が必要
- プレイリスト機能や高度なメディア制御が必要
- Dart主体の実装を好む
- モジュール化された設計を活用したい
まとめ
Flutterで動画再生機能を実装する際、用途やターゲットプラットフォームによって最適なパッケージは異なります。
- シンプルさと公式サポートを重視:video_player
- デスクトップ対応と高性能を重視:fvp
- クロスプラットフォームの一貫性と高度な機能を重視:media_kit
シーク操作のパフォーマンスについては、video_playerとmedia_kitでは一部のケースで遅延が報告されていますが、fvpはハードウェアアクセラレーションを活用した高速なシーク操作を提供しています。
Player.seek takes too long.
Updated Dec 12, 2024
[video_player] `seekTo` beginning happens after delay because of the buffering on Android
Updated May 1, 2025
video_player will not play immediately after seek to begin and play again
Updated Jul 5, 2023
[Enhancement][Native] Smooth seeking/scrubbing
Updated Sep 29, 2024