このトピックでは、AliPlayerKit のコア機能について説明します。製品の位置づけ、コアアーキテクチャ、コンポーネントの責務、コアインターフェイス、および6つのコアシステムの詳細を解説します。
製品の位置づけ
設計目標
AliPlayerKit は、単なるプレーヤー UI コンポーネントではなく、汎用的な再生アーキテクチャレイヤーとして設計されており、以下の目標を掲げています:
設計目標 | 説明 |
ローコード統合 | 最小限のコードで完全な再生シナリオを統合します。 |
マルチシナリオ対応 | ビデオオンデマンド (VOD)、ライブストリーミング、ショートビデオなど、さまざまな再生シナリオに対応します。 |
再利用可能なアーキテクチャ | スロットとポリシーのアーキテクチャを使用し、異なるサービス間でのプレーヤー機能の冗長な開発を回避します。 |
統一された基盤 | すべてのプレーヤーソリューションとシナリオベースのソリューションの統一された基盤として機能します。 |
アーキテクチャ階層
アーキテクチャ階層において、AliPlayerKit はプレーヤーカーネルの上に位置します。統一された UI コンポーネントシステムと再生シナリオの抽象化を通じて、さまざまな再生サービスの共通機能をサポートします。
レイヤー | 位置づけ | モジュールの場所 | 責務 |
コンポーネントレイヤー | プレーヤー UI コンポーネント |
| 基本的な再生機能と一般的なインタラクティブ機能を備えた、すぐに使える設定可能なプレーヤー UI コンポーネントを提供します。 |
シナリオレイヤー | シナリオベースのソリューション |
| ショートフォームドラマ、中・長尺ビデオ、ライブストリーミングなどの典型的なシナリオに対して、標準化された統合例を提供します。これにより、お客様は最小限のコードで完全な再生機能を迅速に構築できます。 |
コアアーキテクチャ
AliPlayerKit は、プレーヤーフレームワークの構築に 3+1 のコアアーキテクチャを使用しています:
3 つのランタイムインターフェイス:これらのインターフェイスは、Model-View-Controller (MVC) アーキテクチャパターンに従っており、UI 表示、再生制御、データ設定の責務を分離・独立させています。
AliPlayerView:インターフェイスのレンダリングとユーザーインタラクションを処理するプレーヤー UI コンポーネント (View) です。AliPlayerController:再生ロジックと状態管理を処理するコントローラー (Controller) です。AliPlayerModel:プレーヤーの再生設定とメディア情報をカプセル化するデータモデルコンポーネント (Model) です。
1 つのグローバルインターフェイス:このインターフェイスは、フレームワークの初期化とグローバルな機能管理を提供します。プレーヤーフレームワークの統一されたエントリーポイントとして機能します。
AliPlayerKit:フレームワークを初期化し、グローバル設定、ログ管理、プリロードなどの基本機能を提供します。
アーキテクチャ設計
AliPlayerKit は、古典的な MVC アーキテクチャを使用してプレーヤーを独立したコンポーネントに分割しています。
コンポーネントの責務
コンポーネント | タイプ | 責務 | ライフサイクル |
| グローバルエントリーポイント | グローバル設定、キャッシュ管理、バージョン情報。 | アプリケーションレベル |
| View | UI 表示、スロット管理、ライフサイクルバインディング。 | ページレベル |
| コントローラー | 再生制御、状態管理、イベント配信。 | ページレベル |
| モデル | 設定データのカプセル化、ビルダーパターン。 | リクエストレベル |
コアインターフェイス
各プレーヤーインスタンスで呼び出すコアインターフェイスは次のとおりです:
インターフェイス | 説明 |
| コントローラーを作成します。 |
| データモデルを構築します。 |
| コントローラーとデータをアタッチします。 |
| デタッチしてリソースを解放します。 |
| 戻るボタンイベントを処理します (任意)。 |
各コンポーネントのメソッドとパラメーターの完全なリストについては、「API リファレンス」をご参照ください。
呼び出しシーケンス
コアインターフェイスの完全な呼び出しフローは、作成、バインド、再生から解放までのライフサイクル全体を網羅します。
完全な統合手順については、「クイックスタート」をご参照ください。
コア機能
スロットシステム
スロットシステムは、プレーヤー UI を独立したコンポーネントに分割します。各スロットは、上部のコントロールバー、プログレスバー、サムネイルなど、特定の機能を担当します。これらのコンポーネントは自由に組み合わせることができます。デフォルトのインターフェイスを使用して迅速に統合したり、必要に応じてコンポーネントを置き換えたり、インターフェイスを完全にカスタマイズしたりできます。UI コンポーネントはプレーヤーコアから完全に分離されています。カスタマイズにソースコードの変更は不要で、アップグレード時にコードが競合するリスクもありません。異なる再生シナリオで同じスロットコンポーネントを再利用できるため、冗長な開発を回避できます。詳細については、「スロットシステム」をご参照ください。
ポリシーシステム
ポリシーシステムは、プレーヤーのビジネスロジックを独立したポリシーコンポーネントにカプセル化します。各ポリシーは、初回フレーム統計、カクつき検出、トラフィック保護、レジューム再生など、特定の機能を実装します。フレームワークコアを変更することなく、ポリシーレイヤーを拡張できます。各ポリシーは独立した単一の責務を持ちます。ポリシーはプレーヤーインスタンス間で再利用でき、必要に応じて有効化または無効化できます。フレームワークのアップグレードとビジネスのカスタマイズは互いに干渉しません。詳細については、「ポリシーシステム」をご参照ください。
イベントシステム
イベントシステムは、Publish/Subscribe パターンを使用して AliPlayerKit コンポーネントを分離します。UI コンポーネントはイベントをサブスクライブし、コントローラーへの参照を保持することなくコマンドを送信します。コントローラーはコマンドを処理し、リスナーを意識することなく状態をパブリッシュします。このアーキテクチャは、UI とビジネスロジックの独立した開発と保守をサポートします。また、playerId を含むイベントを通じて、複数のプレーヤーインスタンス間の通信を自然に分離します。詳細については、「イベントシステム」をご参照ください。
プレーヤーライフサイクルポリシー
プレーヤーライフサイクルポリシーは、インスタンスの作成、再利用、リサイクル、および破棄を管理します。Default、Singleton、ReusePool、IdScopedPool の 4 つの組み込みポリシーが含まれています。これらのポリシーはそれぞれ、一般的なシナリオ、単一プレーヤーのシナリオ、リスト再生のシナリオ、プリロードのシナリオに適しています。ポリシーを選択するだけで、パフォーマンスとリソースのバランスを取ることができます。たとえば、ショートビデオのリストに ReusePool を使用すると、スクロールの滑らかさと初回フレームの速度が大幅に向上します。詳細については、「プレーヤーライフサイクルポリシー」をご参照ください。
ログシステム
ログシステムは、統一されたログセンターである LogHub を提供します。複数レベルの出力とフィルタリング、リスナー拡張、およびその他の機能をサポートします。これにより、プレーヤーのランタイムにおける主要なノードが完全に追跡可能になり、問題診断とパフォーマンス分析に役立ちます。開発中はデバッグのために詳細なログを有効にし、本番環境では出力を効率化できます。また、リスナーを使用してログをファイルに書き込んだり、サーバーに報告したりすることもできます。これにより、テクニカルサポートチームは問題を迅速にトラブルシューティングできます。詳細については、「ログシステム」をご参照ください。
複数のビデオソースのサポート
AliPlayerKit は、複数の種類のビデオソースをサポートしています。VidAuth 方式の使用を推奨します。詳細については、「複数のビデオソースのサポート」をご参照ください。
ソースタイプ | 作成方法 | シナリオ |
VidAuth ソース |
| Alibaba Cloud VOD での推奨方式です (推奨)。 |
VidSts ソース |
| Alibaba Cloud Security Token Service (STS) からの一時的な認証情報を使用します。 |
URL ソース |
| ライブストリーミングまたはシンプルなシナリオ。 |