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_playerfvpmedia_kit
対応プラットフォームAndroid、iOS、macOS、WebWindows、macOS、Linux、Android、iOSAndroid、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