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

ApsaraVideo VOD:カスタム設定

最終更新日:Sep 10, 2026

カスタム構成は、AliPlayerKit における拡張メカニズムです。 AliPlayerKit は、ベストプラクティスに基づいた組み込み構成を備えており、ほとんどのシナリオで追加のセットアップなしに高品質なエクスペリエンスを提供します。 AliPlayerKit インターフェイスを介して直接公開されていないプレーヤー機能が必要な場合は、カスタム構成メカニズムを使用して、基盤となる AliPlayer SDK の API を直接呼び出すことができます。

基本概念

カスタム構成

AliPlayerKit は、基盤となる AliPlayer SDK の高レベルラッパーであり、ベストプラクティスに基づく組み込みの構成を含みます。ただし、基盤となる SDK は、カスタムのバッファリング戦略、Referer ホットリンク保護、HTTP ヘッダーインジェクションなど、より豊富な機能セットを提供します。これらの機能のすべてが AliPlayerKit を通じて直接公開されているわけではありません。

カスタム構成メカニズムは 2 つのコールバックエントリポイントを提供し、重要なタイミングで基盤となるオブジェクトにアクセスして、そのネイティブ API を直接呼び出すことができます:

レベル

API

タイミング

代表的なシナリオ

グローバル設定

+setOnGlobalInitBlock:

+setup での内部初期化が完了した後 (1 回のみ)

ログレベルや HTTP/2 多重化などのグローバルな動作

プレーヤー設定

onPlayerConfigBlock

configure: が呼び出されるたびに、prepare の前

バッファリング戦略、Referer、HTTP ヘッダーなどのインスタンス固有の動作

3 レベル構成システム

AliPlayerKit の構成システムには、3 つのレベルがあります:

┌─────────────────────────────────────────────────────────┐
│              1. グローバル設定 (OnGlobalInitBlock)              │
│         アプリの起動時に 1 回実行され、すべてのプレーヤーインスタンスに影響します                │
├─────────────────────────────────────────────────────────┤
│              2. モデル設定 (AliPlayerModel)                 │
│         configure: が呼び出されるたびに、プロパティを使用して再生パラメーターを設定します               │
├─────────────────────────────────────────────────────────┤
│           3. プレーヤー設定 (onPlayerConfigBlock)               │
│       configure: が呼び出されるたびに、prepare の前に基盤となるプレーヤーへのコールバックを提供します          │
└─────────────────────────────────────────────────────────┘

グローバル設定

ユースケース

  • グローバルログレベルなど、グローバルオプションを設定する

  • HTTP/2 多重化を有効にする

  • グローバルな DNS 名前解決ストラテジーを設定する

  • プレーヤーインスタンスが作成される前に有効にする必要があるその他のグローバルな動作を実装する

仕組み

  • +[AliPlayerKit setOnGlobalInitBlock:] を使用して、コールバックブロックを登録します。

  • このコールバックは、+setup が内部初期化を完了した後に 1 回トリガーされます。

  • 実行後、システムはブロックを nil に設定するため、再度トリガーされることはありません。

  • この時点で、基礎となる SDK の準備が整い、グローバル API を安全に呼び出すことができます。

使用方法

application:didFinishLaunchingWithOptions: 内で、+setup を呼び出す前にコールバックを登録します:

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 1. グローバル設定のコールバックを登録します。
    //    これは setup の前に呼び出す必要があります。
    [AliPlayerKit setOnGlobalInitBlock:^{
        // 例: HTTP/2 多重化を有効にします。
        [AliPlayerFactory setOption:ALLOW_H2_MULTIPLEX value:1];

        // 例: グローバルログレベルを設定します。
        // [AliPlayerFactory setLogLevel:AF_LOG_LEVEL_INFO];
    }];

    // 2. SDK を初期化します。 これにより、内部初期化の完了後、上記で登録されたコールバックがトリガーされます。
    [AliPlayerKit setup];

    return YES;
}

設定シーケンス

application:didFinishLaunchingWithOptions:
    │
    ├── [AliPlayerKit setOnGlobalInitBlock:block]   ← コールバックを登録
    │
    └── [AliPlayerKit setup]
            │
            ├── [GlobalManager setup]    ← 基礎となる SDK を初期化
            │
            ├── sInitialized = YES
            │
            └── block()                  ← グローバル設定コールバックをトリガー (1 回のみ)

注意事項

要点

説明

呼び出し順序

setOnGlobalInitBlock: は +setup の前に呼び出す必要があります

実行回数

グローバル設定は 1 回のみ実行され、+setup は保護のために内部で dispatch_once を使用します。

nil によるキャンセル

登録済みのコールバックは、 nil を渡してキャンセルできます。

べき等性

+setup は複数回呼び出されても 1 回しか実行されず、最初の呼び出し以降はコールバックはトリガーされません。

プレーヤー設定

ユースケース

  • バッファリング戦略 (例:maxBufferDuration および highBufferDuration) をカスタマイズします。

  • Referer ホットリンク保護を設定します。

  • HTTP ヘッダーを設定します。

  • インスタンスレベルのオプションを設定します。

  • AliPlayerKit が直接公開していない他のプレーヤーインターフェイスにアクセスします。

仕組み

  • AliPlayerModel.onPlayerConfigBlock プロパティにコールバックブロックを設定します。

  • コールバックは [controller configure:model] が呼び出されるたびにトリガーされます。

  • コールバックは setDataSource: の後、prepare の前に実行されます。

  • コールバックのパラメーターは、MediaPlayer プロトコルに準拠した、基になるプレーヤーインスタンスです。

使用方法

AliPlayerModel をビルドする際、onPlayerConfigBlock を設定します:

VideoSource *source = [VideoSource urlSourceWithUrl:@"https://example.com/video.mp4"];
AliPlayerModel *model = [[AliPlayerModel alloc] initWithVideoSource:source];

// インスタンスレベルのカスタム設定コールバックを設定します
model.onPlayerConfigBlock = ^(id<MediaPlayer> player) {
    // 既存の設定を取得します
    AVPConfig *config = [player getConfig];

    // 例 1: バッファリング戦略をカスタマイズします
    config.maxBufferDuration = 50000;       // 最大バッファ期間: 50 秒
    config.highBufferDuration = 3000;       // 高ウォーターマーク: 3 秒
    config.startBufferDuration = 500;       // 開始バッファ期間: 500 ms

    // 例 2: Referer ホットリンク保護を設定します
    config.referer = @"https://your-domain.com";

    // 例 3: インスタンスレベルのオプションを設定します
    // [player setOption:key value:value];

    // 全ての設定を一度に適用します
    [player setConfig:config];
};

// ビデオを設定して再生します
[controller configure:model];

設定シーケンス

[controller configure:model]
    │
    ├── lifecycleStrategy.acquire()             ← プレーヤーインスタンスを取得
    │
    ├── [mediaPlayer setDataSource:model]       ← ビデオソースを設定
    │
    ├── model.onPlayerConfigBlock(mediaPlayer)  ← プレーヤー設定コールバックをトリガー
    │
    ├── [strategyManager start/reset]           ← 戦略システムを開始
    │
    └── [mediaPlayer prepare]                   ← 再生準備を開始

使用上の注意

要点

説明

トリガー頻度

これは configure: が呼び出されるたびにトリガーされるため、動的な設定シナリオに適しています。

実行タイミング

カスタム設定に最適なタイミングは、setDataSource: の後、prepare の前に実行されます。

コールバックパラメーター

id<MediaPlayer> インスタンスを使用すると、基になる SDK のすべてのインターフェイスを呼び出すことができます。

オプション設定

onPlayerConfigBlock はオプションであり、通常の再生には影響しません。

非同期処理の回避

コールバック内での時間のかかる処理や非同期処理は避けてください。

組み込み設定項目

AliPlayerKit グローバル設定

AliPlayerKit クラスのメソッドを使用することで、組み込み設定オプションを直接設定できます。

パラメーター

メソッド

説明

初期化

+setup

SDK を初期化します。dispatch_once によりべき等性が保証されます。

初期化ステータス

+isInitialized

SDK が初期化されているかどうかを確認します。

グローバル設定コールバック

+setOnGlobalInitBlock:

グローバル初期化後に実行されるカスタム設定コールバックを登録します。

デバッグモード

+setDebugModeEnabled: / +isDebugModeEnabled

デバッグモードを有効化 / 無効化します (デフォルト: NO)

ログパネル

+setLogPanelEnabled: / +isLogPanelEnabled

プレーヤービューにログパネルを表示するかどうかを指定します。デフォルト値は NO です。

ログレベル

+setLogLevel: / +logLevel

SDK ログ出力レベル (デフォルト: LogLevelInfo)

コンソールログ

+enableConsoleLog: / +isConsoleLogEnabled

コンソールにログを出力するかどうかを指定します (デフォルト: YES)

プレーヤーファクトリー

+setPlayerFactory: / +playerFactory

プレーヤー作成ファクトリーをカスタマイズします。nil を渡すとデフォルトに戻ります。

プリローダー

+setPreloader: / +preloader

プリローダーをカスタマイズします。nil を渡すとデフォルトに戻ります。

キャッシュのクリア

+clearCaches

プレーヤーのローカルメディアキャッシュをクリアします (setup の後に呼び出す必要があります)

言語設定

+setLanguageCode:

言語コードを手動で指定します (zh-Hans / en)

ローカライゼーション

+setLocaleProvider:

カスタムローカライゼーションプロバイダーを注入します。

システム言語

+resetLocaleToSystemLanguage

ロケールをリセットして、システムの優先言語に従います。

現在の言語

+currentLanguageCode

現在アクティブな言語コードを取得します。

バージョン情報

+getPlayerKitVersion / +getSdkVersion

AliPlayerKit または基になる SDK のバージョン番号を取得します。

AliPlayerModel プレーヤー設定

AliPlayerModel プロパティによって設定されるインスタンスレベルの設定項目です。

プロパティ

タイプ

デフォルト

説明

videoSource

VideoSource *

—

必須。ビデオデータソース (readonly、initWithVideoSource: を使用して設定します)

sceneType

SceneType

SceneTypeVOD

再生シーン。UI スロットとジェスチャー動作に影響します。

coverUrl

NSString *

nil

ビデオのカバー画像の URL。

videoTitle

NSString *

nil

トップバーに表示されるタイトル。

autoPlay

BOOL

YES

設定後に自動的に再生を開始するかどうかを指定します。

traceId

NSString *

nil

再生品質モニタリング用のアプリケーション固有の一意識別子。

startTime

NSInteger

0

再生の開始位置 (ミリ秒単位)。負の値は 0 に補正されます。

hardwareDecode

BOOL

YES

ハードウェアデコードを有効にするかどうかを指定します。

allowScreenSleep

BOOL

NO

再生中に画面をスリープ状態にすることを許可するかどうかを指定します。

disableScreenshot

BOOL

NO

iOS 固有のプロパティで、スクリーンショットと画面録画を無効にします。

onPlayerConfigBlock

void (^)(id<MediaPlayer>)

nil

インスタンスレベルのカスタム設定コールバック。

AliPlayerController ランタイム設定

AliPlayerController によって実行時に動的に調整される設定です。

メソッド / プロパティ

タイプ

説明

-setRate:

float

再生速度を設定します。1.0 が通常、0.5 が半速、2.0 が倍速です。

-setLoop:

BOOL

ループ再生を有効または無効にします。

-setMuted:

BOOL

ミュートを有効または無効にします。

-setMirrorMode:

MirrorMode

ミラーモード (None / Horizontal / Vertical)

-setScaleMode:

ScaleMode

スケーリングモード (FitXY / FitCenter / CenterCrop)

-setRotateMode:

RotateMode

回転角度 (0 / 90 / 180 / 270 度)

-setControlsVisible:

BOOL

コントロールバーを表示または非表示にします。

controlsVisibilityLocked

BOOL

コントロールバー表示ロック (YES に設定すると、setControlsVisible:NO は無視されます)

-setFullscreen:

BOOL

フルスクリーンモードを開始または終了します。デフォルトではアニメーション付きで遷移します。

-setFullscreen:animated:

BOOL, BOOL

フルスクリーンモードを開始または終了し、アニメーションを制御できます。

-selectTrack:

TrackQuality *

トラック品質を切り替えます。

-snapshot

—

現在のビデオフレームのスナップショットを取得します。

-toggle

—

再生と一時停止の状態を切り替えます。

-replay

—

最初から再生を再開します。

-stop

—

再生を停止します。

autoLifecycleManagement

BOOL

フォアグラウンド / バックグラウンドでの自動一時停止と再開 (デフォルト: YES)

設定の優先順位

優先順位のルール

同じ項目が複数のレベルで設定されている場合、設定は次の優先順位で適用されます。

プレーヤー設定 (onPlayerConfigBlock) > AliPlayerModel のプロパティ > グローバル設定 > SDK のデフォルト値

設定スコープ

レベル

スコープ

ライフサイクル

グローバル設定

すべてのプレーヤーインスタンス

アプリケーションレベル (1 回のみ実行)

Model properties

A single player instance

Single configure: call

Player config callback

A single player instance

Triggered each time configure: is run

コントローラーメソッド

単一のプレーヤーインスタンス

ランタイムで動的に有効になります

設定例

コード例

// ===== グローバル設定 (AppDelegate 内、1 回のみ) =====
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // グローバルカスタム設定
    [AliPlayerKit setOnGlobalInitBlock:^{
        // HTTP/2 多重化を有効にする
        [AliPlayerFactory setOption:ALLOW_H2_MULTIPLEX value:1];
    }];

    // 初期化
    [AliPlayerKit setup];

    // グローバル組み込み設定 (setup の後に呼び出す必要があります)
    [AliPlayerKit setLogLevel:LogLevelWarn];
    [AliPlayerKit enableConsoleLog:YES];

    return YES;
}

// ===== プレーヤー設定 (プレーヤービューコントローラー内、各再生ごと) =====
- (void)startPlayback {
    VideoSource *source = [VideoSource urlSourceWithUrl:videoUrl];
    AliPlayerModel *model = [[AliPlayerModel alloc] initWithVideoSource:source];

    // モデルプロパティ設定
    model.sceneType = SceneTypeVOD;
    model.videoTitle = @"Awesome Video";
    model.coverUrl = coverImageUrl;
    model.autoPlay = YES;
    model.hardwareDecode = YES;
    model.startTime = resumePosition; // 最後の位置から再開

    // インスタンスレベルのカスタム設定 (基礎となる SDK 用)
    model.onPlayerConfigBlock = ^(id<MediaPlayer> player) {
        AVPConfig *config = [player getConfig];
        config.maxBufferDuration = 50000;
        config.highBufferDuration = 3000;
        config.startBufferDuration = 500;
        config.referer = @"https://your-domain.com";
        [player setConfig:config];
    };

    [_controller configure:model];
}
説明

setLogLevel: や enableConsoleLog: などのログ設定は、LogHub シングルトンインスタンスを操作するため、setup の後に呼び出す必要があります。

API クイックリファレンス

グローバル設定 API

メソッド

説明

+[AliPlayerKit setOnGlobalInitBlock:]

グローバル設定コールバックを登録します。登録を解除するには nil を渡します。

+[AliPlayerKit setup]

初期化を開始し、コールバックを実行します。

プレーヤー設定 API

クラス

プロパティ

説明

AliPlayerModel

onPlayerConfigBlock

インスタンスレベルの設定コールバック (void (^)(id<MediaPlayer>))

関連ファイル

ファイル

説明

PlayerKit/Source/AliPlayerKit.h

グローバル設定 API (OnGlobalInitBlock typedef)

PlayerKit/Source/AliPlayerModel.h

プレーヤー設定のエントリポイント (onPlayerConfigBlock)

PlayerKit/Source/AliPlayerController.h

ランタイム設定用のメソッド

PlayerKit/Source/Player/MediaPlayer.h

基礎となるプレーヤーのプロトコル、すなわちコールバックパラメーターの型

API の一覧については、「API リファレンス」をご参照ください。

よくある質問

設定の実行順序

グローバル設定は、アプリケーション起動時に +setup で一度実行され、プレーヤー設定は各 configure: 呼び出し中に prepare の前に実行されます。この 2 つは互いに干渉しません。

デフォルトの動作

AliPlayerKit には、ベストプラクティスに基づいた組み込み設定が含まれているため、カスタム設定を行わなくても、ほとんどのユースケースに適しています。

コールバック内での非同期処理

これは推奨されません。コールバックは同期的に実行されます。そのため、プレーヤーはコールバックが完了するまで prepare の実行を続行しません。コールバックで時間のかかる操作を実行すると、プレーヤーの起動プロセスがブロックされます。

コールバック内でのビデオソースの変更

これは推奨されません。ビデオソースは、コールバックの前に setDataSource: を使用してすでに設定されています。コールバック内で変更すると、予期しない動作を引き起こす可能性があります。プレーヤー設定コールバックは、バッファリング戦略や Referer などの再生パラメーターを設定する場合にのみ使用してください。

+setup 後の setOnGlobalInitBlock: の呼び出し

有効になりません。+setup メソッドは dispatch_once を使用して、一度だけ実行されることを保証します。+setup メソッドが呼び出された後にブロックを設定しても、そのブロックが実行されることはありません。

ログ設定のタイミング

setLogLevel: と enableConsoleLog: は、LogHub シングルトンを直接操作するため、+setup の後で呼び出す必要があります。ただし、setOnGlobalInitBlock: は +setup の前に設定する必要があります。