すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo VOD:Flutter プレーヤーと UI の統合

最終更新日:Nov 26, 2025

このトピックでは、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 コードをスキャンして、デモパッケージをダウンロードし、インストールしてください:

demo-qr-code

説明

注意:QR コードは最新バージョンのデモパッケージにリンクしています。お使いのデバイスがサードパーティ製アプリケーションのインストールを許可していることを確認してください。

SDK の統合とダウンロード

aliplayer_widget はオープンソースで、ダウンロードが可能です。コンポーネントをカスタマイズするには、ソースコードを取得して変更できます。完全なソースコードは、以下のいずれかの方法で入手できます:

ダウンロード方法

ダウンロードリンク

Pub ソース

説明

パッケージ管理ツールを使用して aliplayer_widget を統合することを推奨します。

GitHub

GitHub リポジトリ

ソースコードパッケージ

aliplayer_widget.zip

ダウンロードしたパッケージには以下が含まれます:

  • コアコンポーネントAliPlayerWidgetAliPlayerWidgetController の完全な実装。

  • サンプルプロジェクトaliplayer_widget_example は、VOD、ライブストリーミング、リスト再生などのシナリオのコードサンプルを提供し、コンポーネントの迅速な統合と使用を支援します。

  • ドキュメントとコメント:ソースコードには、カスタム開発のための詳細なコメントと開発ガイドが含まれています。

統合

手動での依存関係の追加

pubspec.yaml ファイルに以下の依存関係を追加します:

dependencies:
  aliplayer_widget: ^x.y.z
説明

注意x.y.zaliplayer_widget のバージョン番号を表します。Pub.dev 公式ページで最新の安定バージョンを確認し、x.y.z を実際のバージョン番号 (例:^7.0.0) に置き換えてください。

コマンドラインツールの使用

コマンドラインを使用する場合は、以下のコマンドを実行して依存関係を追加します:

flutter pub add aliplayer_widget

このコマンドは、pubspec.yaml ファイルを自動的に更新します。

依存関係を追加した後、ターミナルで以下のコマンドを実行してインストールします:

flutter pub get

これらのステップを完了すると、AliPlayerWidget がプロジェクトに統合されます。これで使用を開始できます。

クイックスタート

ビデオの再生

以下の例は、ページにビデオプレーヤーを埋め込む方法を示しています。わずか数行のコードでビデオを再生できます。

クリックしてサンプルコードを展開

import 'package:flutter/material.dart';
import 'package:aliplayer_widget/aliplayer_widget_lib.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: VideoPlayerPage(),
    );
  }
}

class VideoPlayerPage extends StatefulWidget {
  @override
  _VideoPlayerPageState createState() => _VideoPlayerPageState();
}

class _VideoPlayerPageState extends State<VideoPlayerPage> {
  late AliPlayerWidgetController _controller;

  @override
  void initState() {
    super.initState();
    // プレーヤーコンポーネントのコントローラーを初期化します。
    _controller = AliPlayerWidgetController(context);
    // プレーヤーコンポーネントのデータを設定します。
    final data = AliPlayerWidgetData(
      videoUrl: "https://example.com/video.mp4", // 実際のビデオ URL に置き換えてください。
      coverUrl: "https://example.com/cover.jpg", // 実際のサムネイル URL に置き換えてください。
      videoTitle: "サンプルビデオ",
    );
    _controller.configure(data); // 自動再生を設定します。
  }

  @override
  void dispose() {
    // プレーヤーインスタンスを破棄し、リソースを解放します。
    _controller.destroy();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: AliPlayerWidget(
          _controller,
        ),
      ),
    );
  }
}

手順

  1. AliPlayerWidgetController の初期化

    initState メソッドで _controller インスタンスを作成します。

  2. configure API の呼び出し

    • AliPlayerWidgetData を使用して、ビデオ URL、サムネイル、タイトルなどの情報を設定します。

    • _controller.configure(data) を呼び出して、データをプレーヤーコンポーネントに渡します。

  3. リソースの解放

    メモリリークを防ぐために、dispose メソッドで _controller.destroy() を呼び出します。

より多くのシナリオのサポート

上記の例は、VOD シナリオでの基本的な使用方法を示しています。ライブストリーミングやリスト再生など、より複雑なシナリオについては、サンプルプロジェクト aliplayer_widget_example をご参照ください。詳細なコードと手順が含まれています。

サンプルプロジェクト

プロジェクトの説明

aliplayer_widget_example は、aliplayer_widget Flutter ライブラリをベースにしたサンプルプロジェクトです。ご利用のプロジェクトで AliPlayerWidget を統合して使用する方法を理解し、始めるのに役立ちます。

このサンプルプロジェクトでは、以下の方法を示します:

  • ビデオプレーヤーコンポーネントの埋め込み。

  • VOD、ライブストリーミング、リスト再生など、さまざまなシナリオでの再生機能の設定。

  • カスタムオプションを使用して、パーソナライズされたユーザーエクスペリエンスの作成。

プロジェクトのコンパイルと実行

コマンドラインからの実行

  1. リポジトリのクローン

    まず、aliplayer_widget_example リポジトリをローカルマシンにクローンします:

    cd aliplayer_widget_example
  2. 依存関係のインストール

    以下のコマンドを実行して、プロジェクトに必要な依存関係をインストールします:

    flutter pub get
  3. プロジェクトのコンパイル

    Android プロジェクトのコンパイル

    Android プロジェクトをコンパイルするには、以下の手順を実行します:

    1. Android SDK と Gradle がインストールされていることを確認します。

    2. 以下のコマンドを実行して APK ファイルを生成します:

      flutter build apk
    3. コンパイルが完了すると、APK ファイルは build/app/outputs/flutter-apk/app-release.apk に配置されます。

    iOS プロジェクトのコンパイル

    iOS プロジェクトをコンパイルするには、以下の手順を実行します:

    1. Xcode と CocoaPods がインストールされていることを確認します。

    2. CocoaPods の依存関係を初期化します:

      cd ios && pod install && cd ..
    3. 以下のコマンドを実行して、iOS アプリケーションパッケージ (IPA) ファイルを生成します:

      flutter build ipa
    4. コンパイルが完了すると、IPA ファイルは build/ios/ipa/Runner.ipa に配置されます。

  4. サンプルの実行

    • Android サンプルの実行

      flutter run lib/main.dart
    • iOS サンプルの実行

      cd ios && pod install && cd ..//最初に pod install を実行します。
      
      flutter run lib/main.dart

IDE からの実行

  • Android Studio の使用

    1. プロジェクトを開く

      Android Studio を起動します。[既存のプロジェクトを開く] を選択し、クローンした aliplayer_widget_example ディレクトリを開きます。

    2. 依存関係のインストール

      Android Studio では、pubspec.yaml ファイルをクリックし、次に右上隅にある Pub Get ボタンをクリックして依存関係をインストールします。

    3. デバイスの設定

      Android の物理デバイスが接続されていることを確認します。

    4. アプリケーションの実行

      ツールバーにある緑色の実行ボタン(Run)をクリックし、ターゲットデバイスを選択してアプリケーションを起動します。

  • VS Code の使用

    1. プロジェクトを開く

      VS Code を起動します。[File -> Open Folder] を選択して、クローンした aliplayer_widget_example ディレクトリを開きます。

    2. 依存関係のインストール

      ターミナル (Ctrl + ~) を開き、以下のコマンドを実行して依存関係をインストールします:

      flutter pub get
    3. デバイスの設定

      Android または iOS の物理デバイスが接続されていることを確認します。VS Code の左下隅にあるデバイスセレクターを使用して、ターゲットデバイスを選択します。

    4. アプリケーションの実行

      F5 キーを押すか、左側の Activity Bar にある [実行とデバッグ] アイコンをクリックします。[Flutter] 構成を選択し、デバッグセッションを開始します。

  • Xcode の使用 (iOS のみ)

    1. プロジェクトを開く

      ios ディレクトリに移動し、Runner.xcworkspace ファイルをダブルクリックして Xcode でプロジェクトを開きます。

    2. CocoaPods の依存関係のインストール

      CocoaPods の依存関係がインストールされていない場合は、ターミナルで以下のコマンドを実行します:

      cd ios && pod install && cd ..
    3. 署名の設定

      Xcode で、[Runner] プロジェクトを選択し、[署名と機能] タブに移動して、有効な開発者アカウントと署名証明書を設定します。

    4. アプリケーションの実行

      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 をオーバーレイするために使用されます。

クリックしてサンプルコードを展開

AliPlayerWidget(
  _controller,
  overlays: [
    Positioned(
      right: 16,
      bottom: 80,
      child: Column(
        children: [
          IconButton(icon: Icon(Icons.favorite), onPressed: () {}),
          IconButton(icon: Icon(Icons.share), onPressed: () {}),
        ],
      ),
    ),
  ],
);

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 (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

現在のスクリーンショットのパスステータスを追跡します。controllersnapshot を呼び出すと、この notifier がパスの変更をトリガーします。

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 に関するよくある質問」をご参照ください。