このトピックでは、Flutter プレーヤーをユーザーインターフェイス (UI) と統合する方法について説明します。AliPlayerWidget を統合することで、Flutter プレーヤーを迅速に利用できます。
概要
AliPlayerWidget は、Flutter アプリケーション向けの高性能なビデオ再生コンポーネントです。ApsaraVideo Player ソフトウェア開発キット (SDK) の flutter_aliplayer 上に構築されています。AliPlayerWidget は、ビデオ・オン・デマンド (VOD)、ライブストリーミング、リスト再生、ミニドラマをサポートしています。教育、エンターテインメント、e コマース、ミニドラマアプリケーションなど、さまざまな分野のビデオ再生要件を満たすための豊富な機能と、柔軟性の高い UI カスタマイズ機能を提供します。
要件
カテゴリ | 説明 |
Flutter バージョン | 2.10.0 以降。3.22.2 の使用を推奨します。 |
JDK バージョン | JDK 11 を使用します。 説明 JDK のバージョンを 11 に設定するには、[Preferences] > [Build, Execution, Deployment] > [Build Tools] > [Gradle] > [Gradle JDK] に移動し、[11] を選択します。バージョン 11 が利用できない場合は、Android Studio をアップグレードしてください。 |
Android バージョン | Android 6.0 以降。Gradle 7.0 以降。 |
iOS バージョン | iOS 10.0 以降。 |
携帯電話のチップ | アーキテクチャ:armeabi-v7a または arm64-v8a。 |
開発ツール | Android Studio または Visual Studio Code を使用します。 |
権限
ネットワーク権限
プレーヤーがオンラインのビデオソースを読み込めるように、Android と iOS でネットワーク権限を有効にします。
ライセンス設定
Apsara Video SDK からプレーヤーのライセンス証明書とライセンスキーを取得する必要があります。詳細については、「ライセンスの管理」をご参照ください。
注意:ライセンスが正しく設定されていない場合、プレーヤーは機能せず、ライセンス認証の例外がスローされる可能性があります。
初期化設定の詳細については、サンプルプロジェクト aliplayer_widget_example をご参照ください。
デモ
AliPlayerWidget の機能をすぐに体験できるよう、サンプルプロジェクト aliplayer_widget_example をベースにしたデモパッケージを提供しています。追加の環境設定なしで、このデモをお使いのデバイスにインストールして実行できます。
入手方法
お使いの携帯電話で以下の QR コードをスキャンして、デモパッケージをダウンロードし、インストールしてください:

注意:QR コードは最新バージョンのデモパッケージにリンクしています。お使いのデバイスがサードパーティ製アプリケーションのインストールを許可していることを確認してください。
SDK の統合とダウンロード
aliplayer_widget はオープンソースで、ダウンロードが可能です。コンポーネントをカスタマイズするには、ソースコードを取得して変更できます。完全なソースコードは、以下のいずれかの方法で入手できます:
ダウンロード方法 | ダウンロードリンク |
Pub ソース |
説明 パッケージ管理ツールを使用して aliplayer_widget を統合することを推奨します。 |
GitHub | |
ソースコードパッケージ |
ダウンロードしたパッケージには以下が含まれます:
コアコンポーネント:
AliPlayerWidgetとAliPlayerWidgetControllerの完全な実装。サンプルプロジェクト:
aliplayer_widget_exampleは、VOD、ライブストリーミング、リスト再生などのシナリオのコードサンプルを提供し、コンポーネントの迅速な統合と使用を支援します。ドキュメントとコメント:ソースコードには、カスタム開発のための詳細なコメントと開発ガイドが含まれています。
統合
手動での依存関係の追加
pubspec.yaml ファイルに以下の依存関係を追加します:
dependencies:
aliplayer_widget: ^x.y.z注意:x.y.z は aliplayer_widget のバージョン番号を表します。Pub.dev 公式ページで最新の安定バージョンを確認し、x.y.z を実際のバージョン番号 (例:^7.0.0) に置き換えてください。
コマンドラインツールの使用
コマンドラインを使用する場合は、以下のコマンドを実行して依存関係を追加します:
flutter pub add aliplayer_widgetこのコマンドは、pubspec.yaml ファイルを自動的に更新します。
依存関係を追加した後、ターミナルで以下のコマンドを実行してインストールします:
flutter pub getこれらのステップを完了すると、AliPlayerWidget がプロジェクトに統合されます。これで使用を開始できます。
クイックスタート
ビデオの再生
以下の例は、ページにビデオプレーヤーを埋め込む方法を示しています。わずか数行のコードでビデオを再生できます。
手順
AliPlayerWidgetControllerの初期化initStateメソッドで_controllerインスタンスを作成します。configureAPI の呼び出しAliPlayerWidgetDataを使用して、ビデオ URL、サムネイル、タイトルなどの情報を設定します。_controller.configure(data)を呼び出して、データをプレーヤーコンポーネントに渡します。
リソースの解放
メモリリークを防ぐために、
disposeメソッドで_controller.destroy()を呼び出します。
より多くのシナリオのサポート
上記の例は、VOD シナリオでの基本的な使用方法を示しています。ライブストリーミングやリスト再生など、より複雑なシナリオについては、サンプルプロジェクト aliplayer_widget_example をご参照ください。詳細なコードと手順が含まれています。
サンプルプロジェクト
プロジェクトの説明
aliplayer_widget_example は、aliplayer_widget Flutter ライブラリをベースにしたサンプルプロジェクトです。ご利用のプロジェクトで AliPlayerWidget を統合して使用する方法を理解し、始めるのに役立ちます。
このサンプルプロジェクトでは、以下の方法を示します:
ビデオプレーヤーコンポーネントの埋め込み。
VOD、ライブストリーミング、リスト再生など、さまざまなシナリオでの再生機能の設定。
カスタムオプションを使用して、パーソナライズされたユーザーエクスペリエンスの作成。
プロジェクトのコンパイルと実行
コマンドラインからの実行
リポジトリのクローン
まず、
aliplayer_widget_exampleリポジトリをローカルマシンにクローンします:cd aliplayer_widget_example依存関係のインストール
以下のコマンドを実行して、プロジェクトに必要な依存関係をインストールします:
flutter pub getプロジェクトのコンパイル
Android プロジェクトのコンパイル
Android プロジェクトをコンパイルするには、以下の手順を実行します:
Android SDK と Gradle がインストールされていることを確認します。
以下のコマンドを実行して APK ファイルを生成します:
flutter build apkコンパイルが完了すると、APK ファイルは
build/app/outputs/flutter-apk/app-release.apkに配置されます。
iOS プロジェクトのコンパイル
iOS プロジェクトをコンパイルするには、以下の手順を実行します:
Xcode と CocoaPods がインストールされていることを確認します。
CocoaPods の依存関係を初期化します:
cd ios && pod install && cd ..以下のコマンドを実行して、iOS アプリケーションパッケージ (IPA) ファイルを生成します:
flutter build ipaコンパイルが完了すると、IPA ファイルは
build/ios/ipa/Runner.ipaに配置されます。
サンプルの実行
Android サンプルの実行
flutter run lib/main.dartiOS サンプルの実行
cd ios && pod install && cd ..//最初に pod install を実行します。 flutter run lib/main.dart
IDE からの実行
Android Studio の使用
プロジェクトを開く
Android Studio を起動します。
[既存のプロジェクトを開く]を選択し、クローンしたaliplayer_widget_exampleディレクトリを開きます。依存関係のインストール
Android Studio では、
pubspec.yamlファイルをクリックし、次に右上隅にあるPub Getボタンをクリックして依存関係をインストールします。デバイスの設定
Android の物理デバイスが接続されていることを確認します。
アプリケーションの実行
ツールバーにある緑色の実行ボタン(
Run)をクリックし、ターゲットデバイスを選択してアプリケーションを起動します。
VS Code の使用
プロジェクトを開く
VS Code を起動します。
[File -> Open Folder]を選択して、クローンしたaliplayer_widget_exampleディレクトリを開きます。依存関係のインストール
ターミナル (
Ctrl + ~) を開き、以下のコマンドを実行して依存関係をインストールします:flutter pub getデバイスの設定
Android または iOS の物理デバイスが接続されていることを確認します。VS Code の左下隅にあるデバイスセレクターを使用して、ターゲットデバイスを選択します。
アプリケーションの実行
F5キーを押すか、左側の Activity Bar にある[実行とデバッグ]アイコンをクリックします。[Flutter]構成を選択し、デバッグセッションを開始します。
Xcode の使用 (iOS のみ)
プロジェクトを開く
iosディレクトリに移動し、Runner.xcworkspaceファイルをダブルクリックして Xcode でプロジェクトを開きます。CocoaPods の依存関係のインストール
CocoaPods の依存関係がインストールされていない場合は、ターミナルで以下のコマンドを実行します:
cd ios && pod install && cd ..署名の設定
Xcode で、
[Runner]プロジェクトを選択し、[署名と機能]タブに移動して、有効な開発者アカウントと署名証明書を設定します。アプリケーションの実行
Xcode ツールバーの実行ボタン (
▶️) をクリックし、ターゲットデバイスを選択してアプリケーションを起動します。
サンプルの説明
aliplayer_widget_example プロジェクトは、複数のシナリオをカバーしています。AliPlayerWidget のコア機能とその応用例を示しています。基本的な VOD 再生ページ、複雑なライブストリーミングページ、またはショートビデオのリスト再生ページが必要な場合でも、このサンプルプロジェクトはコンポーネントの統合と使用方法を迅速に学ぶのに役立ちます。必要に応じてプロジェクトをカスタマイズすることもできます。
VOD 再生ページ (LongVideoPage)
説明
このページでは、AliPlayerWidget を使用して基本的な VOD 再生機能を実装する方法を示します。
結果
ページが読み込まれると、指定された VOD ビデオが自動的に再生され、サムネイルとタイトルが表示されます。コントロールバーを使用して、一時停止、早送り、音量調整などの操作ができます。以下はコードサンプルです:
@override
void initState() {
super.initState();
_controller = AliPlayerWidgetController(context);
final data = AliPlayerWidgetData(
videoUrl: "https://example.com/sample-video.mp4",
coverUrl: "https://example.com/sample-cover.jpg",
videoTitle: "サンプルビデオのタイトル",
);
_controller.configure(data);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: AliPlayerWidget(_controller),
);
}ライブストリーミングページ (LivePage)
説明
このページでは、AliPlayerWidget を設定してリアルタイムのライブストリーミングメディアの再生をサポートする方法を示します。
結果
ページが読み込まれると、ライブストリームが低遅延でリアルタイムに再生されます。チャットウィンドウでメッセージを表示したり、コメントを送信したりできます。以下はコードサンプルです:
@override
void initState() {
super.initState();
_controller = AliPlayerWidgetController(context);
final data = AliPlayerWidgetData(
videoUrl: "https://example.com/live-stream.m3u8",
sceneType: SceneType.live,
);
_controller.configure(data);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Expanded(child: AliPlayerWidget(_controller)),
_buildChatArea(),
_buildMessageInput(),
],
),
);
}ショートビデオのリスト再生の使用方法については、「Flutter 向けミニドラマソリューションの統合」をご参照ください。
コアコンポーネント
AliPlayerWidget
AliPlayerWidget は、Flutter アプリケーションにビデオを埋め込んで再生するためのコアプレーヤーコンポーネントです。
コンストラクタ
AliPlayerWidget(
AliPlayerWidgetController controller, {
Key? key,
List<Widget> overlays = const [],
});名前 | 説明 |
controller | プレーヤーコントローラー。再生ロジックを管理するために使用されます。 |
overlays | オーバーレイコンポーネントのオプションリスト。プレーヤーコンポーネント上にカスタム UI をオーバーレイするために使用されます。 |
例
AliPlayerWidgetController
AliPlayerWidgetController は、プレーヤーコンポーネントのコアコントローラーです。プレーヤーコンポーネントの初期化、再生、破棄ロジックを管理するために使用されます。
メソッド
名前 | 説明 |
configure(AliPlayerWidgetData data) | データソースを設定します。 |
play() | ビデオの再生を開始します。 |
pause() | 再生を一時停止します。 |
seek(Duration position) | 特定の再生位置にジャンプします。 |
setUrl(String url) | ビデオの再生 URL を設定します。 |
destroy() | プレーヤーインスタンスを破棄し、リソースを解放します。 |
例
// プレーヤーコンポーネントのコントローラーを初期化します。
final controller = AliPlayerWidgetController(context);
// プレーヤーコンポーネントのデータを設定します。
AliPlayerWidgetData data = AliPlayerWidgetData(
videoUrl: "https://example.com/video.mp4",
);
controller.configure(data);
// プレーヤーを破棄します。
controller.destroy();AliPlayerWidgetData
AliPlayerWidgetData は、プレーヤーコンポーネントに必要なデータモデルです。ビデオ URL、サムネイル、タイトルなどの情報が含まれます。
プロパティ
名前 | 説明 |
videoUrl | ビデオの再生 URL。このパラメーターは必須です。 |
coverUrl | サムネイル URL。このパラメーターはオプションです。 |
videoTitle | ビデオタイトル。このパラメーターはオプションです。 |
thumbnailUrl | サムネイル URL。このパラメーターはオプションです。 |
sceneType | 再生シナリオタイプ。デフォルト値は VOD ( |
例
AliPlayerWidgetData(
videoUrl: "https://example.com/video.mp4",
coverUrl: "https://example.com/cover.jpg",
videoTitle: "サンプルビデオ",
sceneType: SceneType.vod,
);SceneType プロパティ
列挙値 | 説明 |
vod | VOD シナリオ。通常のビデオ再生に適しています。すべての再生コントロール機能をサポートします。 |
live | ライブストリーミングシナリオ。リアルタイムのライブストリーム再生に適しています。プログレスバーのドラッグ、早送りまたは巻き戻し、再生速度の調整など、タイムライン関連の操作はサポートしていません。 |
listPlayer | リスト再生シナリオ。フィードやショートビデオリストなど、ビデオリスト内のプレーヤーに適しています。音量や輝度を調整するための垂直ジェスチャーはサポートしていません。 |
restricted | 制限付き再生シナリオ。教育、トレーニング、試験監視など、限られた再生コントロールが必要なシナリオに適しています。プログレスバーのドラッグ、早送りまたは巻き戻し、再生速度の調整など、タイムライン関連の操作はサポートしていません。 |
minimal | 最小限の再生シナリオ。装飾ビデオ、埋め込みプレーヤー、またはカスタム UI オーバーレイに適しています。ビデオコンテンツのみを表示し、サムネイル、字幕、コントロールインターフェイスを含むすべての UI 要素を非表示にします。完全にカスタムな UI 要件をサポートします。 |
以下は一例です:
_controller = AliPlayerWidgetController(context);
// プレーヤーコンポーネントのデータを設定します。
final data = AliPlayerWidgetData(
sceneType: SceneType.vod
);
_controller.configure(data);カスタム機能
オーバーレイコンポーネント
overlays パラメーターを使用すると、「いいね」、「コメント」、「共有」ボタンなどのカスタム UI コンポーネントをプレーヤー上に簡単にオーバーレイできます。
AliPlayerWidget(
_controller,
overlays: [
Positioned(
right: 16,
bottom: 80,
child: Column(
children: [
IconButton(icon: Icon(Icons.favorite), onPressed: () {}),
IconButton(icon: Icon(Icons.comment), onPressed: () {}),
IconButton(icon: Icon(Icons.share), onPressed: () {}),
],
),
),
],
);一般的な API 呼び出し
AliPlayerWidget は、プレーヤーの動作を直接制御できる一連の外部 API 呼び出しを提供します。これらの API 呼び出しは AliPlayerWidgetController を通じて公開され、再生コントロール、ステータス照会、データ更新などの機能をサポートします。以下は、一般的な外部 API 呼び出しとそのシナリオです:
設定と初期化
名前 | 説明 |
configure | プレーヤーのデータソースを設定し、プレーヤーを初期化します。 |
prepare | プレーヤーを準備します。これは手動の準備プロセスです。 |
再生コントロール
名前 | 説明 |
play | ビデオの再生を開始します。 |
pause | 再生を一時停止します。 |
stop | 再生を停止し、プレーヤーをリセットします。 |
seek | 指定された再生位置にジャンプします。 |
togglePlayState | 再生状態を再生と一時停止の間で切り替えます。 |
replay | ビデオを再再生します。これは通常、再生完了後にビデオを再開するために使用されます。 |
再生プロパティの設定
名前 | 説明 |
setSpeed | 再生速度を設定します。 |
setVolume | 音量を設定します。 |
setVolumeWithDelta | 増分に基づいて音量を調整します。 |
setBrightness | 画面の輝度を設定します。 |
setBrightnessWithDelta | 増分に基づいて画面の輝度を調整します。 |
setLoop | ループ再生を設定するかどうかを設定します。 |
setMute | 音声をミュートするかどうかを設定します。 |
setMirrorMode | 水平または垂直ミラーリングなどのミラーモードを設定します。 |
setRotateMode | 90 度や 180 度などの回転角度を設定します。 |
setScaleMode | ストレッチやクロップなどのレンダリングフィルモードを設定します。 |
selectTrack | 再生解像度を切り替えます。 |
その他の設定
名前 | 説明 |
requestThumbnailBitmap | 指定した時点のサムネイルをリクエストします。 |
clearCaches | ビデオキャッシュやイメージキャッシュを含むプレーヤーキャッシュをクリアします。 |
getWidgetVersion | 現在の Flutter ウィジェットのバージョン番号を取得します。 |
高度な機能
スロットシステム
概要AliPlayerWidget は、プレーヤーインターフェイスの詳細なカスタマイズをサポートする柔軟なスロットシステムを提供します。UI コンポーネントを自由に組み合わせたり置き換えたりして、ブランド化された、シナリオ固有の、またはミニマリストな再生エクスペリエンスを作成できます。
スロットタイプ
以下のコアインタラクティブエリアスロットが組み込まれています:
タイプ | 機能 | デフォルト表示 |
playerSurface | プレーヤービュースロット。ビデオコンテンツをレンダリングします。カスタマイズは推奨されません。 | はい |
topBar | トップバースロット。戻るボタン、タイトル、設定ボタンが含まれます。 | はい |
bottomBar | ボトムバースロット。再生コントロール、プログレスバー、全画面表示ボタンが含まれます。 | はい |
playControl | 再生コントロールスロット。ジェスチャーコントロールのエリアです。 | はい |
coverImage | サムネイルスロット。ビデオが読み込まれる前にサムネイルを表示します。 | はい (条件付き) |
playState | 再生状態スロット。エラーメッセージなどの情報を表示します。 | はい (条件付き) |
centerDisplay | 中央表示スロット。ジェスチャー操作中に音量、輝度、その他のインジケーターを表示します。 | はい (条件付き) |
seekThumbnail | シークサムネイルスロット。プログレスバーをドラッグする際にサムネイルをプレビューします。 | はい (条件付き) |
subtitle | 字幕スロット。ビデオの字幕を表示します。 | はい (条件付き) |
settingMenu | 設定メニュースロット。プレーヤー設定オプションが含まれます。 | はい (最小限のシナリオを除く) |
overlays | オーバレースロット。カスタムオーバーレイを追加するために使用されます。 | いいえ |
playerSurfaceスロット (プレーヤービュー) は変更しないでください。これはコアのビデオレンダリング機能を担当しており、変更すると再生の例外が発生する可能性があります。条件付きとは、スロットが特定の状態または設定でのみ有効になることを意味します。
デフォルトインターフェイスの使用
スロットビルダーを設定しない場合、デフォルトで完全な UI が読み込まれます。これは標準的な再生シナリオに適しています。
Widget _buildPlayWidget() {
return AliPlayerWidget(_controller);
}特定のスロットのカスタマイズ
必要に応じて特定のコンポーネントをカスタマイズし、残りをデフォルトのままにすることで、メンテナンスコストを削減できます。
AliPlayerWidget(
controller,
slotBuilders: {
SlotType.topBar: (context) => MyAppTopBar(title: 'マイビデオ'),
SlotType.bottomBar: (context) => MyCustomControls(),
},
)すべてのスロットのカスタマイズ
AliPlayerWidget(
controller,
slotBuilders: {
SlotType.topBar: (context) => CustomTop(),
SlotType.bottomBar: (context) => CustomBottom(),
SlotType.playControl: (context) => GestureHandler(),
SlotType.coverImage: (context) => BrandCover(),
SlotType.playState: (context) => ErrorOverlay(),
SlotType.centerDisplay: (context) => VolumeIndicator(),
SlotType.seekThumbnail: (context) => PreviewThumb(),
SlotType.subtitle: (context) => SubtitleView(),
SlotType.settingMenu: (context) => MySettings(),
SlotType.overlays: (context) => [AdBanner(), Watermark()],
},
)特定のスロットの非表示
スロットの値を null に設定すると、対応するエリアが非表示になります。
AliPlayerWidget(
controller,
slotBuilders: {
SlotType.topBar: null, // トップバーを非表示にします。
SlotType.settingMenu: null, // 設定メニューを非表示にします。
SlotType.centerDisplay: null, // ジェスチャーフィードバックプロンプトを無効にします。
},
)以下は完全な例です:
// よりクリーンなインターフェイスのためにトップバーとボトムバーを非表示にします。
AliPlayerWidget(controller, slotBuilders: {
SlotType.topBar: null,
SlotType.bottomBar: null,
});
// カスタムのビジネスオーバーレイを追加します。
AliPlayerWidget(controller, slotBuilders: {
SlotType.overlays: (context) => MyLikeShareButtons(),
});
// 完全にブランド化されたユーザーインターフェイスを作成します。
AliPlayerWidget(controller, slotBuilders: {
SlotType.topBar: (context) => MyAppTopBar(),
SlotType.bottomBar: (context) => MyAppBottomBar(),
SlotType.settingMenu: null, // 設定を非表示にします。
});イベント通知
AliPlayerWidgetController は、プレーヤーのステータス変更やユーザー操作に関するリアルタイムの通知を送信するための一連の ValueNotifier オブジェクトを提供します。以下は、一般的な notifier オブジェクトとその目的です:
一般的な notifier の概要
再生ステータス管理
名前 | 説明 |
playStateNotifier | 再生、一時停止、停止などの再生状態の変更を監視します。 |
playErrorNotifier | 再生中に発生したエラーを監視し、エラーコードと説明を提供します。 |
再生プログレス管理
名前 | 説明 |
currentPositionNotifier | 現在の再生プログレスをリアルタイムで更新します。単位:ミリ秒。 |
bufferedPositionNotifier | ビデオのバッファリングプログレスを追跡し、キャッシュされたコンテンツの範囲を理解するのに役立ちます。 |
totalDurationNotifier | ビデオの合計時間に関する情報を提供します。これは、再生プログレス率を計算したり、合計時間を表示したりするのに役立ちます。 |
音量と輝度のコントロール
Notifier | 説明 |
volumeNotifier | 音量の変更を監視し、動的な音量調整をサポートします。値は通常 0.0 から 1.0 です。 |
brightnessNotifier | 画面の輝度の変更を監視します。これにより、周囲光に基づいて輝度を調整できます。値は通常 0.0 から 1.0 です。 |
定義とサムネイル
Notifier | 説明 |
currentTrackInfoNotifier | 標準解像度、高解像度、超高解像度など、現在のビデオ解像度の変更を追跡します。また、切り替え後の解像度の詳細も提供します。 |
thumbnailNotifier | サムネイルの読み込みステータスを監視し、プログレスバーをドラッグする際に対応するサムネイルプレビューがリアルタイムで表示されるようにします。 |
ビデオのダウンロードとスクリーンショット
Notifier | 説明 |
snapFileStateNotifier | 現在のスクリーンショットのパスステータスを追跡します。 |
downloadStateNotifier | ビデオのダウンロードステータスを追跡します。この機能は `vidAuth` または `vidSts` タイプのデータでのみ利用可能です。これを使用して、ビデオがダウンロードされたかどうかを確認します。 |
使用方法
ValueListenableBuilder を使用して、notifier からの変更をリッスンできます。これにより、UI をリアルタイムで更新したり、ロジックを実行したりできます。以下は一例です:
// 再生エラーをリッスンします。
ValueListenableBuilder<Map<int?, String?>?>(
valueListenable: _controller.playErrorNotifier,
builder: (context, error, _) {
if (error != null) {
final errorCode = error.keys.firstOrNull;
final errorMsg = error.values.firstOrNull;
return Text("再生エラー: [$errorCode] $errorMsg");
}
return SizedBox.shrink();
},
);特徴
マルチシナリオ適応
VOD、ライブストリーミング、リスト再生、全画面再生など、複数のシナリオをサポートします。
豊富な機能セット
基本機能:再生コントロール、設定パネル、サムネイル表示、解像度切り替えなどのコア機能を提供し、標準的なビデオ再生要件を満たします。
ジェスチャーコントロール:輝度、音量、再生プログレスのジェスチャーコントロールをサポートし、直感的で便利なユーザーエクスペリエンスを提供します。
柔軟な UI カスタマイズ
オーバーレイサポート:カスタムオーバーレイコンポーネントをサポートし、高い拡張性を提供します。これにより、広告やライブコメントなどの複雑な機能の実装が可能になります。
モジュール設計:トップバー、ボトムバー、設定パネルなど、再利用可能な UI コンポーネントを組み込みで提供し、カスタム開発を容易にします。
全画面適応:横向きと縦向きモードの切り替えに自動的に適応し、さまざまなデバイスで最適な表示効果を保証します。
イベントとステータス管理
リアルタイムステータス監視:再生ステータス、ビデオのディメンション、バッファプログレスのリアルタイムデータ更新を提供し、動的なインタラクションを容易にします。
イベントコールバックメカニズム:再生開始、一時停止、完了のステータス管理を含む、プレーヤーの包括的なイベントリスナーを提供します。これにより、さまざまな再生シナリオの管理が容易になります。
ログとデバッグのサポート:詳細なログシステムを提供し、トラブルシューティングとパフォーマンス最適化を容易にします。
コアの利点
簡単な API 呼び出しを行うことで、高品質なビデオ再生機能を迅速に統合し、開発コストを大幅に削減できます。AliPlayerWidget は、基本的な再生コントロールから、ジェスチャー調整やオーバーレイなどの複雑なインタラクティブシナリオまで対応します。これにより、スムーズで効率的なユーザーエクスペリエンスの構築を支援します。
使いやすさ
簡単な API 呼び出しを行うことで、複雑なビデオ再生機能を実装し、Flutter プロジェクトに迅速に統合できます。
柔軟性と拡張性
モジュール設計により、さまざまなカスタムオプションをサポートし、カスタム開発を容易にします。
さまざまな画面サイズと解像度に自動的に適応し、一貫したユーザーエクスペリエンスを保証します。
高性能と安定性
ApsaraVideo Player SDK 上に構築されており、低遅延で高安定性のビデオ再生エクスペリエンスを提供します。
最適化されたアーキテクチャ、軽量コンポーネント、非同期読み込み、イベント駆動モデルにより、効率的な操作とスムーズなユーザーエクスペリエンスを保証します。
クロスプラットフォームサポート
Flutter のクロスプラットフォーム機能を活用し、Android と iOS の両方をサポートすることで、両プラットフォーム向けの単一コードベース開発を可能にします。
注意事項
リソースの解放
ページが破棄される際には、必ず AliPlayerWidgetController.destroy() メソッドを呼び出してプレーヤーリソースを解放してください。
ネットワーク権限
アプリケーションがオンラインビデオを読み込むために必要なネットワーク権限を持っていることを確認してください。
サムネイルサポート
サムネイル機能を使用したい場合は、有効なサムネイル URL が提供されていることを確認してください。
デバッグと最適化
開発中は、トラブルシューティングを容易にするためにログ機能を有効にすることを推奨します。さらに、再生のスムーズさに影響を与えないように、オーバーレイコンポーネントのパフォーマンスを最適化する必要があります。
よくある質問
ApsaraVideo Player SDK の使用時に発生する一般的な問題とその解決策については、「ApsaraVideo Player に関するよくある質問」をご参照ください。