この Topic では、ApsaraVideo Player SDK for iOS を使用して RTS を実装する方法について説明します。
前提条件
お使いの環境に CocoaPods がインストールされていること。
SDK の統合
CocoaPods を使用して ApsaraVideo Player SDK の依存関係を追加します。
ターミナルウィンドウを開きます。
プロジェクトディレクトリに移動し、Podfile を作成します。
pod init
Podfile を編集して、最新の依存関係を追加します。
player_sdk_version = 'x.x.x' # 最新バージョンの使用を推奨します。 rts_sdk_version = '7.10.0' # 独立したバージョン番号。これは最新バージョンです。 # ApsaraVideo Player SDK pod 'AliPlayerSDK_iOS' , player_sdk_version # プレーヤー SDK と RTS コンポーネント間のブリッジレイヤー (AlivcArtc)。バージョン番号はプレーヤー SDK と同じである必要があります。このレイヤーは RTS コンポーネントと統合する必要があります。 pod 'AliPlayerSDK_iOS_ARTC' , player_sdk_version # RTS コンポーネント pod 'RtsSDK' , rts_sdk_version重要プレーヤーと RTS コンポーネント間のブリッジレイヤー (AlivcArtc) のバージョンは、プレーヤーのバージョンと同じである必要があります。ブリッジレイヤーは RTS コンポーネントと統合する必要があります。
プレーヤーのバージョンの詳細については、「SDK のダウンロード」をご参照ください。V7.5.0 以降の使用を推奨します。サポートされる最小バージョンは V5.4.5.0 です。
詳細については、「iOS プレーヤーのよくある質問」をご参照ください。
SDK をインストールします。コマンドを実行すると、.xcworkspace ファイルが生成され、SDK が統合されたことを示します。
pod install
ApsaraVideo Player SDK API の使用
ApsaraVideo Player SDK API を呼び出して、RTS 機能を実装します。ApsaraVideo Player SDK の機能の詳細については、「高度な機能」および「API リファレンス」をご参照ください。
次のコードは一例です。詳細なコードについては、API-Example の RTS Playback モジュールをご参照ください。このプロジェクトは、開発者が SDK のコア機能を迅速に統合する方法を学ぶのに役立つ、ApsaraVideo Player SDK for iOS の Objective-C サンプルプロジェクトです。
ApsaraVideo Player を使用して RTS ストリームフェッチングを実装する場合、`pause` を呼び出してライブストリームを一時停止することはできません。代わりに、`stop` を呼び出して再生を停止し、その後 `prepare` を呼び出して再生を再開する必要があります。
`seek` (ドラッグ) 操作はサポートされていません。
プレーヤーの作成
プレーヤーを作成します。
AliPlayer インスタンスを作成します。
// プレーヤーインスタンスを作成します。 AliPlayer mAliPlayer = [[AliPlayer alloc] init]; // 再生ビデオをホストするビューコンテナーを作成し、プレーヤーのレンダリングビューを設定します。 UIView playerView = [[UIView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:playerView]; mAliPlayer.playerView = playerView; [mAliPlayer setTraceID:traceId];説明プレーヤーが提供する再生品質モニタリング、シングルポイントトラッキング、およびビデオ再生統計機能は、イベントトラッキングログレポート機能に依存しています。
プレーヤーを作成する際、
setTraceIDパラメーターの設定によって利用可能な機能が異なります。詳細は次のとおりです:setTraceIDパラメーターを渡さない場合 (デフォルト):イベントトラッキングログレポート機能が有効になります。その後、再生品質モニタリングとビデオ再生統計機能を使用できます。シングルポイントトラッキング機能は利用できません。setTraceIDパラメーターに `traceid` を渡す場合:`traceid` の値はユーザーまたはユーザーデバイスの一意の識別子である必要があります (ビジネスの `userid` や、International Mobile Equipment Identity (IMEI) または identifier for advertisers (IDFA) などのデバイス ID など)。`traceid` を渡すと、イベントトラッキングログレポート機能が有効になります。その後、再生品質モニタリング、シングルポイントトラッキング、およびビデオ再生統計機能を使用できます。setTraceIDパラメーターをDisableAnalyticsに設定する場合:イベントトラッキングログレポート機能が無効になります。再生品質モニタリング、シングルポイントトラッキング、およびビデオ再生統計機能は利用できません。
再生ソースを設定します。
プレーヤーは VidSts、VidAuth、VidMps、UrlSource の 4 種類の再生ソースをサポートしています。UrlSource は URL からの直接再生をサポートします。RTS サービスを使用するには、URL プロトコルを
artc://に設定する必要があります。AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:"artc://<ストリーミング URL>"]; [mAliPlayer setUrlSource:urlSource];説明再生ソースの設定方法の詳細については、「基本的な機能」をご参照ください。
再生パラメーターを設定します。
再生パラメーターを構成して、RTS のパフォーマンスを向上させます。
説明ApsaraVideo Player SDK V6.3.0 以降は、最適な低レイテンシーのための自動構成をサポートしています。再生 URL が `artc://` で始まり、かつ
AVPConfigのMaxDelayTime、HighBufferDuration、またはStartBufferDurationの値を手動で変更していない場合、SDK は再生中にこれらのパラメーターに自動的に 1000、10、10 を使用します。コントロールをカスタマイズするには、次の例をご参照ください:
// 1. 構成を取得して変更します。 AVPConfig *config = mAliPlayer.getConfig; if ([playUrl hasPrefix:@"artc://"]) { // 最大ストリーム遅延は 1000 ms です。 [config setMaxDelayTime:1000]; // 再生開始時のバッファー時間。 [config setStartBufferDuration:10]; // カクつきから回復するためのバッファー時間。 [config setHighBufferDuration:10]; } else { // config にはデフォルトまたはカスタムの構成を使用します。 } // 2. 構成を適用します。 [mAliPlayer setConfig:config];再生を開始します。
// 再生を準備します。 [mAliPlayer prepare]; // prepare の後、start 操作を同期的に呼び出すことができます。onPrepared コールバックが完了すると、再生が自動的に開始されます。 [mAliPlayer start];
再生のコントロール
ApsaraVideo Player SDK for iOS は、主要な再生コントロール操作をサポートしています。
再生の開始
start API はビデオの再生を開始します。次のコードに例を示します:
[mAliPlayer start];再生の停止
stop API はビデオの再生を停止します。次のコードに例を示します:
[mAliPlayer stop];プレーヤーの破棄
プレーヤーインスタンスを同期または非同期で破棄できます。次のコードは一例です:
// 同期的な破棄。stop API は内部で自動的に呼び出されます。
[mAliPlayer destroy];
// 非同期的な破棄。stop API は内部で自動的に呼び出されます。
[mAliPlayer destroyAsync];同期的な破棄 API を呼び出すと、プレーヤーリソースが完全にリリースされるまで呼び出しは返りません。UI の応答性に高い要件がある場合は、非同期的な破棄 API を使用し、次の点に注意することを推奨します:
非同期破棄プロセスの間は、プレーヤーオブジェクトに対して他の操作を実行しないでください。
非同期的な破棄 API を呼び出す前に、手動でプレーヤーを停止する必要はありません。これは、プロセスにすでに非同期的な停止フローが含まれているためです。
補助機能
ロギングの有効化または無効化
// ロギングを有効にします。 [mAliPlayer setEnableLog:YES]; [mAliPlayer setLogCallbackInfo:LOG_LEVEL_TRACE callbackBlock:nil]; // ロギングを無効にします。 [mAliPlayer setEnableLog:NO]; [mAliPlayer setLogCallbackInfo:LOG_LEVEL_NONE callbackBlock:nil];ライブストリームのスペックダウン
説明再生のスペックダウンは、タイムアウトシナリオでのみトリガーされます。再生タイムアウトシナリオで、以下のいずれかのスペックダウンソリューションが構成されている場合、スペックダウンが実行されます。それ以外の場合は、プレーヤーの `onError` コールバックがトリガーされます。404、403、またはストリーマーの切断などの例外では、スペックダウンはトリガーされません。
自動 RTS スペックダウンは、同じドメイン名を使用して RTS から FLV にスペックダウンします。RTS と FLV のドメイン名が異なる場合は、カスタム RTS スペックダウンソリューションを構成して、ターゲットの FLV ドメイン名を指定する必要があります。
自動 RTS スペックダウン (デフォルトで有効)
RTS URL からストリームを再生するとき、カスタム RTS スペックダウンが構成されておらず、RTS ストリームフェッチングが失敗した場合、プレーヤーは自動的に対応するデフォルトの FLV URL にスペックダウンして再生します。次のコードに例を示します:
// 1: 有効。0: 無効。この機能はデフォルトで有効です。 [AliPlayerGlobalSettings setOption:ALLOW_PRE_RENDER valueInt:1];カスタム RTS スペックダウン
RTS URL からストリームを再生するとき、HLS や FLV URL などの RTS のスペックダウン URL を設定できます。RTS ストリームフェッチングが失敗した場合、プレーヤーは自動的に指定された URL にスペックダウンして再生します。
// スペックダウンソース downgradeUrl を設定します。 AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:downgradeUrl]; // オプション。config の他の項目を構成します。 AVPConfig *config = [mAliPlayer getConfig]; // スペックダウン URL を設定します。 [mAliPlayer enableDowngrade:urlSource config:config];
TraceID の取得
各 RTS 再生セッションには、トラブルシューティングに使用できる `traceId` があります。`traceId` はプレーヤーイベントコールバックから取得できます。
// プレーヤーの onPlayerEvent コールバックをリッスンし、DemuxerTraceID メッセージを解析します。 - (void)onPlayerEvent:(AliPlayer*)mAliPlayer eventWithString:(AVPEventWithString)eventWithString description:(NSString *)description { switch (eventWithString) { case EVENT_PLAYER_DEMUXER_TRACE_ID: { NSString *traceId = description; } break; default: break; } }