このトピックでは、ApsaraVideo Player SDK for Android の高度な機能の使用例について説明します。サポートされている機能とその使用方法の詳細については、「API リファレンス」をご参照ください。
専門能力検証
ApsaraVideo Player の一部の機能には、Professional Edition のライセンスが必要です。これらの機能を使用するには、ライセンスを取得する必要があります。詳細については、「ApsaraVideo Player SDK の機能」および「ApsaraVideo Player SDK のライセンス取得」をご参照ください。
アプリケーションの起動時、またはプレーヤーの API 操作を呼び出す前に、リスナーを設定します。
import com.aliyun.private_service.PrivateService;
PrivateService.setOnPremiumLicenseVerifyCallback(new PrivateService.OnPremiumLicenseVerifyCallback() {
@Override
public void onPremiumLicenseVerifyCallback(PrivateService.PremiumBizType type, boolean isValid, String errorMsg) {
Log.d(TAG, "onPremiumLicenseVerifyCallback: " + type + " isValid: " + isValid + " errorMsg: " + errorMsg);
}
});PremiumBizType は Professional Edition 機能の列挙です。関連機能を使用すると、プレーヤーはライセンスを検証し、このコールバックを介して結果を返します。isValid が false の場合、errorMsg には失敗の理由が含まれます。
再生
リスト再生
ApsaraVideo Player SDK for Android は、短編動画フィードに最適な包括的なリスト再生機能を提供します。プリロードなどの機能と組み合わせることで、短編動画の起動速度が大幅に向上します。
より良いリスト再生体験のために、ミニシリーズソリューションの使用を推奨します。詳細については、「ミニシリーズのクライアントサイド開発」をご参照ください。
透明度のあるビデオの再生
機能説明
ApsaraVideo Player SDK は、アルファチャンネルのレンダリングをサポートし、透明なギフトアニメーションの動的な効果を実現します。ライブチャンネルなどのシナリオで、ライブコンテンツを隠すことなく透明なギフトアニメーションを再生することで、ユーザーの視聴体験とインタラクティブ体験が大幅に向上します。
制限事項
透明レンダリング機能は、All-in-One SDK V6.8.0 以降、または ApsaraVideo Player SDK V6.9.0 以降で利用できます。
利点
透明度情報を持つ MP4 ビデオをギフト効果に使用すると、アニメーションの品質が向上し、ファイルサイズが小さくなり、互換性が高まり、開発効率が向上します。これにより、ギフト効果をユーザーにより良く提示でき、ユーザーエクスペリエンスが向上します。
より良いアニメーション品質:MP4 ビデオは、詳細や色を含む元のアニメーション品質を保持します。APNG や IXD などの他のフォーマットと比較して、MP4 はデザイナーが作成したアニメーション効果をより正確に復元します。
より小さいファイルサイズ:MP4 ビデオファイルは、APNG や IXD などの他のフォーマットよりも効果的に圧縮されるため、読み込み速度が向上し、ネットワーク帯域幅の消費が削減されます。
より高い互換性:MP4 は、さまざまなデバイスやブラウザで広くサポートされているユニバーサルビデオフォーマットであり、ギフト効果が主流のデバイスで正しく再生されることを保証します。
より高い開発効率:MP4 ビデオをギフト効果として使用することは、比較的簡単な技術的ソリューションです。開発者は複雑な解析やレンダリングロジックを研究・実装する必要がなく、他の機能に集中して開発効率を向上させることができます。
外部字幕
詳細なコード例については、API-Example の ExternalSubtitle モジュールをご参照ください。このプロジェクトは、ApsaraVideo Player SDK for Android のコア機能を迅速に統合するための Java ベースのサンプルプロジェクトです。
ApsaraVideo Player SDK for Android は、外部字幕の追加と切り替えをサポートしています。SDK は SRT、SSA、ASS、VTT の字幕フォーマットをサポートしています。
例:
字幕を表示するためのビューの作成
字幕フォーマットに基づいて異なるビューを作成します。
Player SDK V7.6.0 以降を使用し、
VttSubtitleViewを使用して SRT および VTT 字幕を表示する場合、次のリスナーを設定する必要があります。// プレーヤー V7.6.0 以降で必須 mAliPlayer.setOnVideoSizeChangedListener(new IPlayer.OnVideoSizeChangedListener() { @Override public void onVideoSizeChanged(int width, int height) { int viewWidth = getWidth(); int viewHeight = getHeight(); IPlayer.ScaleMode mode = mVideoListPlayer.getScaleMode(); SubTitleBase.VideoDimensions videoDimensions = SubTitleBase.getVideoDimensionsWhenRenderChanged(width, height, viewWidth, viewHeight, mode); vttSubtitleView.setVideoRenderSize(videoDimensions.videoDisplayWidth, videoDimensions.videoDisplayHeight); } });字幕の追加
重要onPreparedで字幕ファイルを設定します。mAliPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() { @Override public void onPrepared() { // 字幕設定 (onPrepared で設定する必要があります) mAliPlayer.addExtSubtitle(EXT_SUBTITLE_URL); } });字幕関連リスナーの設定
音声のみの再生
音声のみの再生を実現するには、prepare を呼び出す前に PlayerConfig を設定してビデオ再生を無効にします。
PlayerConfig config = aliPlayer.getConfig();
config.mDisableVideo = true; // 音声のみの再生を有効にする
aliPlayer.setConfig(config);ソフトウェアとハードウェアデコーディングの切り替え
再生が開始される前にデコード方法を切り替えてください。再生中の切り替えは効果がありません。
ApsaraVideo Player SDK for Android は、H.264 および H.265 のハードウェアデコード機能と enableHardwareDecoder スイッチを提供します。このスイッチはデフォルトで有効になっています。ハードウェアデコードの初期化に失敗した場合、プレーヤーは自動的にソフトウェアデコードに切り替わり、動画が正常に再生されるようにします。以下にコード例を示します。
// ハードウェアデコードを有効にします。デフォルトで有効です
aliPlayer.enableHardwareDecoder(true);プレーヤーがハードウェアデコードからソフトウェアデコードに自動的に切り替わった場合、onInfo を介してコールバックがトリガーされます。 以下にコードの例を示します。
mApsaraPlayerActivity.setOnInfoListener(new IPlayer.OnInfoListener() {
@Override
public void onInfo(InfoBean infoBean) {
if (infoBean.getCode() == InfoCode.SwitchToSoftwareVideoDecoder) {
// ソフトウェアデコードに切り替えられました
}
}
});H.265 アダプティブ再生
現在のデバイスモデルがクラウドベースの H.265 ブラックリストに含まれている場合、または H.265 ストリームのハードウェアデコードに失敗した場合、適応的なフォールバックが発生します。フォールバックプロセスは次のとおりです:H.264 バックアップストリームが設定されている場合、バックアップストリームが自動的に再生されます。H.264 バックアップストリームが設定されていない場合、プレーヤーは自動的に H.265 ソフトウェアデコードにフォールバックします。
この機能は、クラウドとクライアントを組み合わせた適応型デコードの付加価値サービスを有効にした後にのみ有効になります。このサービスを有効にするには、Yida フォームを送信してライセンスを申請する必要があります。
クラウドとクライアントを組み合わせた適応型デコードの付加価値サービスには、主に次のものが含まれます:1. クラウドベースのハードウェアデコード互換性データの動的配信。2. H.265 ストリームから H.264 ストリームへの適応的なフォールバック。
この付加価値サービスが有効になっていなくても、ハードウェアデコードに失敗した場合、SDK は自動的にソフトウェアデコードに切り替わることができます。
次のコードは、バックアップストリームを設定する方法を示しています。
// アプリケーション層は、元の URL とバックアップ URL のすべてのキーと値のペアを格納する Map を維持します。切り替え時に、元の URL に基づいて Map 内のバックアップ URL をクエリします
AliPlayerGlobalSettings.setAdaptiveDecoderGetBackupURLCallback(new AliPlayerGlobalSettings.OnGetBackupUrlCallback() {
@Override
public String getBackupUrlCallback(int oriBizScene, int oriCodecType, String original_url) {
String kurl = original_url;
if (!H265toH264Map.get(kurl).isEmpty()) {
return H265toH264Map.get(kurl);
} else {
return "";
}
}
});ネットワーク状況に応じた動画解像度のアダプティブ切り替え
マルチビットレートアダプティブ HLS 動画ストリームは、ApsaraVideo VOD の動画パッケージングトランスコーディングテンプレートグループを使用して生成できます。詳細については、「VOD のアダプティブビットレートストリーミングの設定」をご参照ください。
ApsaraVideo VOD のトランスコーディングで生成されたアダプティブストリームを Vid で再生する場合、アダプティブビデオストリームを取得して再生するには、デフォルトの再生解像度リストを
DEFINITION_AUTOに設定する必要があります。 そうしないと、プレーヤーはデフォルトのロジックに基づいて、再生用に低解像度のビデオストリームを選択します。 デフォルトの解像度の再生順序については、「ビデオが複数の解像度にトランスコードされている場合、プレーヤー SDK はデフォルトでどの解像度を再生しますか?」をご参照ください。 次のコードは、VidAuth 再生の場合に解像度リストを指定する方法を示しています。VidAuth vidAuth = new VidAuth(); List<Definition> list = new ArrayList<>(); list.add(Definition.DEFINITION_AUTO); vidAuth.setDefinition(list);
Android 版 ApsaraVideo Player SDK は、HLS および DASH ビデオストリームのアダプティブビットレートストリーミングに対応しています。prepare が成功した後、getMediaInfo を呼び出して、TrackInfo オブジェクトで各ビットレートストリームに関する情報を取得できます。次のコードは例です。
List<TrackInfo> trackInfos = aliPlayer.getMediaInfo().getTrackInfos();再生中に、プレーヤーの selectTrack メソッドを呼び出して、再生ビットレートストリームを切り替えることができます。値を AUTO_SELECT_INDEX に設定すると、アダプティブビットレートストリーミングが有効になります。次のコードは一例です。
int index = trackInfo.getIndex();
// ビットレートを切り替える
aliPlayer.selectTrack(index);
// ビットレートを切り替えて適応させる
aliPlayer.selectTrack(TrackInfo.AUTO_SELECT_INDEX);切り替え結果は、OnTrackChangedListener を設定した後 (selectTrack を呼び出す前) にコールバックを介して返されます。コード例を次に示します。
aliPlayer.setOnTrackChangedListener(new IPlayer.OnTrackChangedListener() {
@Override
public void onChangedSuccess(TrackInfo trackInfo) {
// 切り替え成功
}
@Override
public void onChangedFail(TrackInfo trackInfo, ErrorInfo errorInfo) {
// 切り替え失敗。失敗理由は errorInfo.getMsg() から取得
}
});オプション: プレーヤーの selectTrack メソッドを呼び出して再生ストリームをアダプティブビットレートストリーミングに切り替える前に、設定でアダプティブビットレート (ABR) 切り替えの最大解像度を設定できます。これにより、予期しないビットレートへの自動切り替えを防ぎます。設定を有効にするには、プレーヤーが prepare メソッドを呼び出す前、またはリストプレーヤーが moveTo メソッドを呼び出す前にこのコードを呼び出すことを推奨します。コード例を次に示します。
PlayerConfig config = aliPlayer.getConfig();
config.mMaxAllowedAbrVideoPixelNumber = 921600; // ABR 解像度のピクセル数の上限を 921600 (幅 × 高さ = 1280 × 720) に設定します。これにより、ABR が切り替え可能な解像度のピクセル数はこの値以下になります
aliPlayer.setConfig(config);スナップショットの取得
ApsaraVideo Player SDK for Android は、現在のビデオフレームをキャプチャするスナップショット機能を提供します。snapshot API 操作を使用できます。これは生データをキャプチャし、OnSnapShotListener コールバックインターフェイスを介して bitmap として返します。コード例を次に示します。
// スナップショットコールバックを設定
aliPlayer.setOnSnapShotListener(new OnSnapShotListener(){
@Override
public void onSnapShot(Bitmap bm, int with, int height){
// 取得したビットマップと画像のディメンション
}
});
// 現在の再生フレームをキャプチャ
aliPlayer.snapshot();プレビュー
ApsaraVideo Player SDK for Android は、ApsaraVideo VOD の設定と連携してプレビュー機能を実装します。VidSts および VidAuth (ApsaraVideo VOD に推奨) の再生方法をサポートしています。プレビュー機能の設定と使用方法の詳細については、「動画のプレビュー」をご参照ください。
プレビュー機能を設定した後、VidPlayerConfigGen.setPreviewTime() メソッドを使用して、プレーヤーのプレビュー時間を設定します。VidSts 再生の例を次に示します。
VidSts vidSts = new VidSts;
....
VidPlayerConfigGen configGen = new VidPlayerConfigGen();
configGen.setPreviewTime(20);// 20 秒のプレビュー
vidSts.setPlayConfig(configGen);// 再生ソースに設定
...プレビュー時間を設定すると、ApsaraVideo Player SDK for Android を介してビデオが再生される際に、サーバーは完全なビデオコンテンツを返さず、指定されたプレビュー時間分のコンテンツのみを返します。
VidPlayerConfigGen は、サーバーがサポートするリクエストパラメーターの設定をサポートしています。詳細については、「リクエストパラメーター」をご参照ください。
プレビュー機能は現在、FLV および MP3 形式の動画ではサポートされていません。
ブラックリストの設定
ApsaraVideo Player SDK for Android は、ハードウェアデコーディングのブラックリストメカニズムを提供します。再生にハードウェアデコーディングを使用できないデバイスの場合、エラーを防ぐために直接ソフトウェアデコーディングを使用できます。コード例は次のとおりです。
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.model="Lenovo K320t";
AliPlayerFactory.addBlackDevice(BlackType.HW_Decode_H264 ,deviceInfo );ブラックリストは、アプリを終了すると自動的にクリアされます。
Referer の設定
ApsaraVideo Player SDK for Android は、Referer の設定をサポートしています。コンソールのブラックリストおよびホワイトリストの Referer 設定と組み合わせることで、アクセス権限をコントロールできます。リクエスト Referer を設定するには、PlayerConfig メソッドを使用します。プレーヤー SDK の設定例を次に示します。
// まず、設定を取得します
PlayerConfig config = aliPlayer.getConfig();
// Referer を設定します。例:http://example.aliyundoc.com。(注:Referer を設定する際はプロトコル部分を含めてください。)
config.mReferrer = referrer;
....// その他の設定
// プレーヤーに設定を適用します
aliPlayer.setConfig(config);User-Agent の設定
Android 版 ApsaraVideo Player SDK では、PlayerConfig を使用してリクエストの User-Agent (UA) を設定できます。設定後、プレーヤーはリクエストに UA 情報を含めます。以下のコードは一例です。
// まず、設定を取得します
PlayerConfig config = aliPlayer.getConfig();
// UA を設定します
config.mUserAgent = "設定する User-Agent";
....// その他の設定
// プレーヤーに設定を適用します
aliPlayer.setConfig(config);ネットワークリトライ時間と回数の設定
PlayerConfig クラスを使用すると、ApsaraVideo Player SDK for Android のネットワークタイムアウトとリトライ回数を設定できます。次のコードに例を示します。
// まず、設定を取得します
PlayerConfig config = aliPlayer.getConfig();
// ネットワークタイムアウトをミリ秒単位で設定します
config.mNetworkTimeout = 5000;
// タイムアウト時のリトライ回数を設定します。リトライ間隔は networkTimeout です。networkRetryCount=0 はリトライなしを意味し、リトライポリシーはアプリによって決定されます。デフォルト値は 2 です
config.mNetworkRetryCount=2;
....// その他の設定
// プレーヤーに設定を適用します
aliPlayer.setConfig(config);NetworkRetryCount を設定し、ネットワークの問題で読み込み状態になった場合、プレーヤーは NetworkRetryCount 回リトライします。各リトライの間隔は mNetworkTimeout です。
複数回再試行してもプレーヤーがまだ読み込み状態の場合、
onErrorイベントが呼び出されます。この場合、ErrorInfo.getCode() は ErrorCode.ERROR_LOADING_TIMEOUT を返します。NetworkRetryCount が [0] に設定されていて、ネットワーク接続がタイムアウトした場合、プレーヤーは
onInfoイベントを呼び出します。このイベントでは、InfoBean.getCode() は InfoCode.NetworkRetry を返します。この時点で、プレーヤーのreloadメソッドを呼び出して、ネットワークを再読み込みするか、他の処理を実行できます。
キャッシュと遅延の制御設定
ApsaraVideo Player SDK for Android は、PlayerConfig を通じてキャッシュとレイテンシーコントロールを設定するためのインターフェイスを提供します。以下のコードは一例です。
HTTP ヘッダーの設定
PlayerConfig メソッドを使用すると、プレーヤーのリクエストに HTTP ヘッダーパラメーターを追加できます。以下にコード例を示します。
// まず、設定を取得します
PlayerConfig config = aliPlayer.getConfig();
// ヘッダーを定義します
String[] headers = new String[1];
headers[0]="Host:example.com";// 例えば、ヘッダーに Host を設定する場合
// ヘッダーを設定します
config.setCustomHeaders(headers);
....// その他の設定
// プレーヤーに設定を適用します
aliPlayer.setConfig(config);ピクチャーインピクチャー (PiP)
詳細なコード例については、API-Example の PictureInPicture モジュールをご参照ください。このプロジェクトは、ApsaraVideo Player SDK for Android のコア機能を迅速に統合するための Java ベースのサンプルプロジェクトです。
手順は次のとおりです。
AndroidManifest.xmlファイルで、PiP 権限を宣言します。<activity android:name=".PictureInPictureActivity" android:exported="true" android:supportsPictureInPicture="true" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" />ターゲットの
Activityを PiP モードに切り替えます。Rational aspectRatio = new Rational(16, 9); // PiP のアスペクト比、ビジネスニーズに応じて調整可能 PictureInPictureParams.Builder pipBuilder = new PictureInPictureParams.Builder(); pipBuilder.setAspectRatio(aspectRatio); enterPictureInPictureMode(pipBuilder.build());OnClick イベント、アプリを離れるとき、またはアプリに戻るときに PiP モードをトリガーすることを選択できます。実装方法は次のとおりです。
OnClick によるトリガー
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Rational aspectRatio = new Rational(16, 9); // PiP のアスペクト比 PictureInPictureParams.Builder pipBuilder = new PictureInPictureParams.Builder(); pipBuilder.setAspectRatio(aspectRatio); enterPictureInPictureMode(pipBuilder.build()); } });アプリを離れるときのトリガー
@Override protected void onUserLeaveHint() { super.onUserLeaveHint(); Rational aspectRatio = new Rational(16, 9); // PiP のアスペクト比 PictureInPictureParams.Builder pipBuilder = new PictureInPictureParams.Builder(); pipBuilder.setAspectRatio(aspectRatio); enterPictureInPictureMode(pipBuilder.build()); Log.e(TAG, "PiP onUserLeaveHint"); }アプリに戻るときのトリガー
@Override public void onBackPressed() { super.onBackPressed(); // バックプレスからトリガー enterPictureInPictureMode(); }PiP ウィンドウの表示・非表示の UI を処理します。
@Override public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) { super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig); if (isInPictureInPictureMode) { // PiP モードに入るときの処理 // UI を非表示にする Log.e(TAG, "PiP モードに入ります"); } else { // PiP モードを終了するときの処理 // UI を表示する Log.e(TAG, "PiP モードを終了します"); } }
ライブ RTS フォールバック
詳細なコード例については、API-Example の RtsLiveStream モジュールをご参照ください。このプロジェクトは、ApsaraVideo Player SDK for Android のコア機能を迅速に統合するための Java ベースのサンプルプロジェクトです。
詳細については、「RTS ライブストリーミング」をご参照ください。
左右のサウンドチャンネルの切り替え
ApsaraVideo Player SDK for Android は、setOutputAudioChannel メソッドを使用して出力サウンドチャンネルを設定します。 入力ソースがデュアルチャンネルの場合、このメソッドを使用して左チャンネルまたは右チャンネルに切り替えることができます。 入力ソースがシングルチャンネルの場合、この設定は効果がありません。
出力サウンドチャンネルの設定は、オーディオレンダリングと PCM データコールバックの両方に影響します。
/*
OutputAudioChannel.OUTPUT_AUDIO_CHANNEL_LEFT: 左チャンネルに切り替えて再生,
OutputAudioChannel.OUTPUT_AUDIO_CHANNEL_RIGHT: 右チャンネルに切り替えて再生,
OutputAudioChannel.OUTPUT_AUDIO_CHANNEL_NONE: チャンネルを切り替えず、入力ソースのチャンネルで再生
*/
aliPlayer.setOutputAudioChannel();音声ストリームの解析
リスナーを設定して、オーディオおよびビデオストリームデータを取得します。この機能は、解析できないため暗号化されたストリームをサポートしていません。
動画の背景色の設定
ApsaraVideo Player SDK for Android は、プレーヤーのレンダリングの背景色を設定することをサポートしています。API 操作と使用方法は次のとおりです。
API 操作例
/**
* ビデオの背景色を設定します。
*
* @param color ARGB
*
*/
abstract public void setVideoBackgroundColor(int color);使用方法
// パラメーターは 8 桁の 16 進数データです。8 桁はペアでグループ化され、A (アルファ透明度)、R (赤)、G (緑)、B (青) を順番に表します
// 例えば、0x0000ff00 は緑を表します
aliPlayer.setVideoBackgroundColor(0x0000ff00);VidAuth の再生ドメイン名の指定
VidAuth メソッドを使用して、VID に対応するドメイン名などのフィールドを指定できます。サポートされているフィールドの詳細については、「GetPlayInfo リクエストパラメーター」をご参照ください。API 操作と使用方法は次のとおりです。
API 操作例
/**
* 再生パラメーターを設定します。
*
* @param playConfig 再生パラメーター
*/
public void setPlayConfig(VidPlayerConfigGen playConfig);使用方法
VidPlayerConfigGen インターフェイスの addPlayerConfig メソッドを使用して、playDomain フィールドを追加できます。
vidAuth = new VidAuth();
VidPlayerConfigGen configGen = new VidPlayerConfigGen();
// playDomain フィールドを追加します。追加可能なフィールドの詳細については、
// https://www.alibabacloud.com/help/vod/developer-reference/api-vod-2017-03-21-getplayinfo をご参照ください
configGen.addPlayerConfig("playDomain", "com.xxx.xxx");
vidAuth.setPlayConfig(configGen);H.266 デコーディングプラグイン
H.266 (VVC/Versatile Video Coding) は、同じ画質を維持しながらビットレートを大幅に節約できる次世代のビデオエンコーディング標準です。パフォーマンスを最適化し、メイン SDK のサイズを制御するために、H.266 の付加価値デコード機能はプラグインとして独立してカプセル化されており、オンデマンドでの統合をサポートしています。
前提条件
ApsaraVideo Player SDK または All-in-One SDK のバージョンが 7.6.0 以降であること。
Professional Edition のライセンスを取得していること。詳細については、「ApsaraVideo Player SDK のライセンスの取得」をご参照ください。
H.266 デコードプラグインを搭載した ApsaraVideo Player は、Alibaba Cloud Transcoding によってトランスコードされた H.266 ビデオのみをサポートします。
プラグインの統合
プラグインのアクティベート
ApsaraVideo Player SDK V7.7.0 for Android 以降、プラグインは統合後にデフォルトで有効になり、手動でアクティベートする必要はありません。
AliPlayerGlobalSettings.enableCodecPlugin("vvc", true);関連エラーコード
H.266 デコーディングプラグインに関連するエラーコードについては、「異なるクライアント上のプレーヤーに関するよくある質問」をご参照ください。
再生ソースの自動更新
再生ソースの自動更新機能を有効にすると、認証の有効期限切れによる再生の中断を防ぐことができます。この機能は、ソースが無効になったときにリスナーをトリガーし、新しい再生アドレスを取得して、継続的でスムーズなビデオ再生を保証します。
前提条件
ApsaraVideo Player SDK または All-in-One SDK のバージョンが 7.9.0 以降であること。
VidAuth ソースを再生に使用しているか、ビジネスでURL 署名が設定されていること。
VidAuth ソース
API 操作の例
/**
* VidAuth ソースの有効期限イベントのリスナーを設定します。
*
* この機能により、VidAuth ソースの自動更新が可能になり、有効期限切れによる再生の中断を回避できます。
* リスナーがトリガーされると、VidAuth ソースを更新し、更新された VidAuth を
* {@link SourceRefreshCallback#onSuccess} を使用して返すことができます。
*
* @param listener VidAuth ソースの有効期限イベントをリッスンするインターフェイス。{@link OnVidAuthExpiredListener} を参照してください。
*
*/
abstract public void setOnVidAuthExpiredListener(OnVidAuthExpiredListener listener);機能コンポーネント
UrlSource ソース
API 操作の例
/**
* URL ソースの有効期限イベントのリスナーを設定します。
*
* この機能により、認証による URL の有効期限切れによる再生の中断を回避するための
* URL 更新が可能になります。リスナーがトリガーされると、URL ソースを更新し、
* 更新された URL ソースを {@link SourceRefreshCallback#onSuccess} を使用して返すことができます。
*
* @param listener URL ソースの有効期限イベントを処理するためのリスナー。{@link OnURLSourceExpiredListener} をご参照ください。
*
* <p>URL 認証の設定に関する詳細については、
* <a href="https://www.alibabacloud.com/help/document_detail/vod/user-guide/configure-url-signing.html?spm=a2c4g.11186623.0.0.560c4140fGh8MW">URL 認証ドキュメント</a>をご参照ください。</p>
*/
abstract public void setOnURLSourceExpiredListener(OnURLSourceExpiredListener listener);機能コンポーネント
追加のユーティリティ関数
次の例では、タイプ A 署名を使用しています。
パフォーマンス
再生シナリオの設定
再生シナリオを設定すると、そのシナリオに最適なパラメーター (バッファー設定、機能スイッチなど) が自動的に設定されます。また、setConfig インターフェイスを介して行われたカスタムパラメーター設定とも互換性があります (カスタム設定が優先されます)。
再生シナリオを設定した後、
getConfigインターフェイスを使用してパラメーター設定を表示できます。
API 操作の例
/**
* プレーヤーシーンを設定します。
*
* @param scene
*/
abstract public void setPlayerScene(PlayerScene scene);再生シナリオ
public enum PlayerScene {
/**
* シーンなし
*/
NONE,
/**
* 長編ビデオシーン:30 分以上のビデオに適用
*/
LONG,
/**
* 中編ビデオシーン:5 分から 30 分のビデオに適用
*/
MEDIUM,
/**
* 短編ビデオシーン:0 秒から 5 分のビデオに適用
*/
SHORT,
/**
* ライブストリーミングシーン
*/
LIVE,
/**
* RTS ライブシーン
*/
RTS_LIVE
}使用方法
// 短編ビデオシーンを設定
aliPlayer.setPlayerScene(PlayerScene.SHORT)
// 中編ビデオシーンを設定
aliPlayer.setPlayerScene(PlayerScene.MEDIUM)
// 長編ビデオシーンを設定
aliPlayer.setPlayerScene(PlayerScene.LONG)
// ライブストリーミングシーンを設定
aliPlayer.setPlayerScene(PlayerScene.LIVE)プリレンダリング
ApsaraVideo Player SDK for Android は、再生開始前に最初のフレームを高速にレンダリングすることをサポートしており、これにより起動速度を向上させることができます。
この機能はデフォルトで無効になっています。
この機能を有効にすると、準備成功と最初のフレームレンダリングのコールバックのトリガー順序に影響します。無効の場合、準備成功のコールバックは最初のフレームレンダリングのコールバックの前にトリガーされます。有効の場合、デコーディングとレンダリングの速度が異なるため、最初のフレームレンダリングのコールバックが準備成功のコールバックの前にトリガーされることがありますが、これは再生には影響しません。
例:
aliPlayer.setOption(ALLOW_PRE_RENDER, 1);ローカルキャッシュ
詳細なコード例については、API-Example の Preload モジュールをご参照ください。このプロジェクトは、ApsaraVideo Player SDK for Android のコア機能を迅速に統合するための Java ベースのサンプルプロジェクトです。
ApsaraVideo Player SDK for Android は、ローカルキャッシュ機能を提供します。この機能は、ユーザーが動画を再再生する際の起動速度、シーク速度を向上させ、途切れを減らすと同時に、トラフィックも節約します。
ローカルキャッシュの有効化
ローカルキャッシュ機能はデフォルトで無効になっています。使用するには、手動で有効にする必要があります。これは AliPlayerGlobalSettings の enableLocalCache によって制御されます。コード例を次に示します。
ビデオ再生 URL に認証パラメーターが含まれている場合、ローカルキャッシュおよび再生中に認証パラメーターが変更されます。認証が異なる同一 URL のキャッシュヒット率を向上させるには、
setCacheUrlHashCallbackインターフェイスを介して、ハッシュ値 (たとえば MD5) を計算する前に URL から認証パラメーターを削除します。たとえば、認証パラメーター付きのビデオ再生 URL がhttp://****.mp4?aaaの場合、読み込み時にhttp://****.mp4を使用してハッシュ値を計算します。ただし、ビデオが暗号化された m3u8 ビデオの場合、その keyURL から認証パラメーターを削除してハッシュ値を計算するように処理されると、異なるビデオのキャッシュが同じキーにヒットしてしまい、再生に失敗する可能性があります。解決策:setCacheUrlHashCallbackのコールバックでドメイン名チェックを実行し、再生ドメイン (http(s)://xxxxx.m3u8?aaaa) の認証パラメーターのみを削除し、keyURL に対応するドメイン (http(s)://yyyyy?bbbb) からは削除しません。
サーバーが HTTP と HTTPS の両方のプロトコルをサポートしているが、異なるプロトコルが同じメディアファイルを指している場合、ハッシュ値を計算する前にリクエストヘッダーを削除または統一できます。例えば:
動画再生 URL が
https://****.mp4とhttp://****.mp4の場合、読み込み時に****.mp4を使用してハッシュ値を計算します。ビデオ再生 URL が
https://****.mp4の場合は、http://****.mp4に統一してからハッシュ値を計算します。
プレーヤー SDK バージョン 5.5.4.0 以降では、ビデオ再生 URL に認証パラメーターがあり、再生プロトコルが HLS の場合、
PlayerConfig.mEnableStrictAuthModeフィールドを設定して、さまざまな認証モードを選択できます (バージョン 5.5.4.0 から 6.21.0 までのデフォルト値は false です。バージョン 7.0.0 以降のデフォルト値は true です):非厳密認証 (false):認証もキャッシュされます。前回メディアの一部のみがキャッシュされた場合、プレーヤーは次回キャッシュされていない部分を再生する際にキャッシュされた認証を使用してリクエストを行います。URL 認証の有効期間が非常に短い場合、再生例外が発生します。
厳密認証 (true):認証はキャッシュされません。再生開始時に毎回認証が行われます。これにより、ネットワーク接続がないと再生に失敗します。
単一 URL のローカルキャッシュの有効化または無効化
単一 URL のローカルキャッシュ機能を有効または無効にしたい場合は、PlayerConfig で設定できます。
// まず、設定を取得します
PlayerConfig config = aliPlayer.getConfig();
// 再生 URL のローカルキャッシュを有効にするかどうか。デフォルト値は true です。AliPlayerGlobalSettings のローカルキャッシュが有効で、ここでのローカルキャッシュも有効 (true に設定) の場合、この URL のローカルキャッシュが有効になります。ここで false に設定すると、この URL のローカルキャッシュは無効になります。
config.mEnableLocalCache = false;
....// その他の設定
// プレーヤーに設定を適用します
aliPlayer.setConfig(config);プリロード
ApsaraVideo Player SDK for Android は、ローカルキャッシュ機能をアップグレードしたプリロード機能を提供します。動画キャッシュ用のメモリサイズを設定することで、動画の起動速度をさらに向上させることができます。
プリロード機能の制限は次のとおりです。
現在、MP4、MP3、FLV、HLS などの単一メディアファイルの読み込みをサポートしています。
ApsaraVideo Player SDK for Android は、デフォルトでプリロードのための自動ネットワークリソーススケジューリング機能を提供します。これにより、プリロードのネットワークリクエストが再生中の動画のネットワークリクエストに与える影響を軽減します。自動スケジューリングポリシーは次のように機能します。現在再生中の動画のバッファーが特定のしきい値に達した後にのみ、プリロードがリクエストを行うことを許可します。プリロードのリアルタイムリクエストを自分で制御するには、次の方法でこのポリシーを無効にできます。
AliPlayerGlobalSettings.enableNetworkBalance(false);ローカルキャッシュ機能を有効にします。詳細については、「ローカルキャッシュ」をご参照ください。
データソースを設定します。
VidAuth (推奨)
VidAuth vidAuth = new VidAuth(); vidAuth.setVid("Vid 情報");// 必須。ビデオ ID (VideoId)。 vidAuth.setPlayAuth("<yourPlayAuth>");// 必須。再生認証情報。ApsaraVideo VOD の GetVideoPlayAuth API 操作を呼び出して生成する必要があります。 vidAuth.setRegion("アクセスリージョン");// プレーヤー SDK V5.5.5.0 以降では、このパラメーターは非推奨です。リージョンを設定する必要はなく、プレーヤーが自動的に解析します。プレーヤー SDK バージョン 5.5.5.0 より前では、このパラメーターは必須です。ApsaraVideo VOD のアクセスリージョンで、デフォルトは cn-shanghai です。 vidAuth.setQuality("選択された解像度") //"AUTO" はアダプティブビットレートを表しますVidSts
VidSts vidSts = new VidSts(); vidSts.setVid("Vid 情報");// 必須。ビデオ ID (VideoId)。 vidSts.setAccessKeyId("<yourAccessKeyId>");// 必須。一時的な STS トークンの AccessKey ID。STS の AssumeRole API 操作を呼び出して生成する必要があります。 vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必須。一時的な STS トークンの AccessKey Secret。STS の AssumeRole API 操作を呼び出して生成する必要があります。 vidSts.setSecurityToken("<yourSecurityToken>");// 必須。STS セキュリティトークン。STS の AssumeRole API 操作を呼び出して生成する必要があります。 vidSts.setRegion("アクセスリージョン");// 必須。ApsaraVideo VOD のアクセスリージョンで、デフォルトは cn-shanghai です。 vidSts.setQuality("選択された解像度") //"AUTO" はアダプティブビットレートを表しますUrlSource
UrlSource urlSource = new UrlSource(); urlSource.setUri("再生 URL");// 必須。再生 URL。サードパーティの VOD URL または ApsaraVideo VOD の再生 URL を指定できます。タスクパラメーターを設定します。
説明これはマルチビットレートビデオにのみ適用されます。
setDefaultBandWidth、setDefaultResolution、またはsetDefaultQualityのいずれかを選択できます。PreloadConfig preloadConfig = new PreloadConfig(); // マルチビットレートストリームのプリロードビットレートを設定 preloadConfig.setDefaultBandWidth(400000); // マルチビットレートストリームのプリロード解像度を設定 preloadConfig.setDefaultResolution(640 * 480); // マルチビットレートストリームのプリロード品質を設定 preloadConfig.setDefaultQuality(“FD”); // プリロード時間を設定 preloadConfig.setDuration(1000);タスクリスナーを追加します。
タスクをビルドし、
MediaLoaderV2インスタンスに追加してプリロードを開始します。VidAuth (推奨)
// プリロードタスクをビルド PreloadTask mPreloadTask = new PreloadTask(vidAuth, preloadConfig); // MediaLoaderV2 インスタンスを取得 MediaLoaderV2 mediaLoaderV2 = MediaLoaderV2.getInstance(); // タスクを追加してプリロードを開始 String taskId = mediaLoaderV2.addTask(mPreloadTask, PreloadListenerImpl)VidSts
// プリロードタスクをビルド PreloadTask mPreloadTask = new PreloadTask(vidSts, preloadConfig); // MediaLoaderV2 インスタンスを取得 MediaLoaderV2 mediaLoaderV2 = MediaLoaderV2.getInstance(); // タスクを追加してプリロードを開始 String taskId = mediaLoaderV2.addTask(mPreloadTask, PreloadListenerImpl);UrlSource
// プリロードタスクをビルド PreloadTask mPreloadTask = new PreloadTask(urlSource, preloadConfig); // MediaLoaderV2 インスタンスを取得 MediaLoaderV2 mediaLoaderV2 = MediaLoaderV2.getInstance(); // タスクを追加してプリロードを開始 String taskId = mediaLoaderV2.addTask(mPreloadTask, PreloadListenerImpl)任意: タスクの管理
mediaLoaderV2.cancelTask(taskId);// 指定されたタスク ID のプリロードタスクをキャンセル mediaLoaderV2.pauseTask(taskId);// 指定されたタスク ID のプリロードタスクを一時停止 mediaLoaderV2.resumeTask(taskId);// 指定されたタスク ID のプリロードタスクを再開任意: ロードされたファイルの削除
必要に応じてロードされたファイルを削除して、スペースを節約できます。ApsaraVideo Player SDK for Android は削除インターフェイスを提供していません。アプリの読み込みディレクトリ内のファイルを削除する必要があります。
動的プリロード
動的プリロード戦略により、インテグレーターは現在再生中の動画のキャッシュと、プリロードされるアイテムの数とキャッシュの両方を制御できます。これにより、ビジネスは再生体験とコストのバランスを取ることができます。
マルチビットレート HLS 動画のプリロード
listPlayer + マルチビットレート HLS 動画再生シナリオでは、インテグレーターは現在再生中の動画と同じ解像度のストリームをプリロードできます。また、ビジネスニーズに基づいてプリロードモードを選択することもできます。
ダウンロード速度の取得
getExtraValue API 操作を使用して、onInfo コールバックから現在再生中のビデオのダウンロード速度を取得できます。コード例を次に示します。
aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
@Override
public void onInfo(InfoBean infoBean) {
if(infoBean.getCode() == InfoCode.CurrentDownloadSpeed){
// 現在のダウンロード速度
long extraValue = infoBean.getExtraValue();
}
}
});ネットワーク機能
HTTPDNS
HTTPDNS は、特定の HTTPDNS サーバーにドメイン名解決リクエストを送信して、より高速で安定したドメイン名解決結果を取得し、DNS ハイジャックのリスクを軽減します。
ApsaraVideo Player SDK は、Alibaba Cloud CDN ドメイン名専用の HTTPDNS サービスを提供する拡張 HTTPDNS 機能を提供します。Alibaba Cloud CDN ネットワークの正確なスケジューリングとリアルタイム解決をサポートし、ネットワークパフォーマンスを効果的に向上させます。
拡張 HTTPDNS の例
拡張 HTTPDNS は、Alibaba Cloud CDN ドメイン名に対してのみ HTTPDNS サービスを提供します。設定するドメイン名が Alibaba Cloud CDN ドメイン名であり、ドメイン名の設定が完了し、使用準備ができていることを確認してください。ApsaraVideo VOD で CDN ドメイン名を追加および設定する方法の詳細については、「高速化ドメイン名の追加」をご参照ください。CDN ドメイン名の詳細については、「Alibaba Cloud CDN」をご参照ください。
// 拡張 HTTPDNS を有効にする
AliPlayerGlobalSettings.enableEnhancedHttpDns(true);
// オプション:HTTPDNS の事前解決のためにドメイン名を追加する
DomainProcessor.getInstance().addPreResolveDomain("player.***alicdn.com");HTTP/2
ApsaraVideo Player SDK for Android は、バージョン 5.5.0.0 以降、デフォルトで HTTP/2 を有効にしています。
ApsaraVideo Player SDK for Android は、HTTP/2 プロトコルの使用をサポートしています。このプロトコルは、多重化によって再生パフォーマンスを向上させ、head-of-line ブロッキングを回避します。コード例は次のとおりです。
AliPlayerGlobalSettings.setUseHttp2(true);HTTP の TCP 接続の事前確立
HTTP 動画再生リクエスト (HTTPS ではない) の場合、TCP 接続を事前に確立することで、ユーザーエクスペリエンスを大幅に向上させ、ネットワーク接続時間を短縮し、即時かつ継続的な再生を保証し、ネットワークとシステムリソースの使用を最適化できます。使用方法は次のとおりです。
// ドメイン形式は host[:port] で、port はオプションです。複数のドメイン名を区切るにはセミコロン (;) を使用します
// グローバル設定
// 完全なインターフェイスは、各設定の標準として現在の文字列を使用します (多い場合は追加、少ない場合は削除)。空の文字列は事前接続を停止します
AliPlayerGlobalSettings.setOption(AliPlayerGlobalSettings.SET_PRE_CONNECT_DOMAIN, "domain1;domain2");ビデオダウンロード
詳細なコード例については、API-Example の Download モジュールをご参照ください。このプロジェクトは、ApsaraVideo Player SDK for Android のコア機能を迅速に統合するための Java ベースのサンプルプロジェクトです。
ApsaraVideo Player SDK for Android は、ApsaraVideo VOD の動画ダウンロード機能を提供します。これにより、ユーザーは動画をローカルにキャッシュして、ApsaraVideo Player を使用してオフラインで視聴できます。また、通常ダウンロードとセキュアダウンロードの 2 つのダウンロード方法を提供します。
通常ダウンロード
ダウンロードされた動画データは Alibaba Cloud によって暗号化されません。ユーザーはサードパーティのプレーヤーで再生できます。
セキュアダウンロード
ダウンロードされた動画データは Alibaba Cloud によって暗号化されます。サードパーティのプレーヤーでは再生できません。ApsaraVideo Player を使用してのみ再生できます。
説明
動画ダウンロード機能は、VidSts および VidAuth メソッドでのみサポートされています。
プレーヤーの動画ダウンロード機能を使用するには、ApsaraVideo VOD コンソールでダウンロードモードを有効にして設定する必要があります。詳細については、「オフラインダウンロード」をご参照ください。
ビデオダウンロードは、再開可能なダウンロードをサポートしています。
操作手順
任意: セキュアダウンロード用の暗号化ファイルの設定。これはセキュアダウンロードにのみ必要で、通常ダウンロードには必要ありません。
説明設定された暗号化ファイルがアプリ情報と一致していることを確認してください。そうしないと、動画のダウンロードに失敗します。
ダウンロード方法をセキュアダウンロードに設定した場合、ApsaraVideo VOD コンソールで生成されたキーファイルをプレーヤー SDK に設定する必要があります。これは、動画のダウンロードと再生中の復号と検証に使用されます。キーファイルの生成方法の詳細については、「セキュアダウンロードの有効化」をご参照ください。
Application クラスで一度設定することを推奨します。コード例は次のとおりです。
PrivateService.initService(getApplicationContext(), "encryptedApp.dat があるファイルパス"); // encryptedApp.dat ファイルを携帯電話に保存し、ここで暗号化ファイルのローカルファイルパスを設定することを推奨しますダウンローダーの作成と設定
AliDownloaderFactory を使用してダウンローダーを作成できます。コード例は次のとおりです。
AliMediaDownloader mAliDownloader = null; ...... // ダウンローダーを作成 mAliDownloader = AliDownloaderFactory.create(getApplicationContext()); // ダウンロードの保存パスを設定 mAliDownloader.setSaveDir("保存フォルダーのアドレス");リスナーの設定
ダウンローダーは複数のイベントリスナーを提供します。コード例は次のとおりです。
ダウンロードソースの準備
prepareメソッドを使用してダウンロードソースを準備できます。 ダウンロードソースは VidSts メソッドと VidAuth メソッドをサポートしています。 以下のコードは一例です。VidSts
// VidSts オブジェクトを作成します。 VidSts aliyunVidSts = new VidSts(); aliyunVidSts.setVid("your_video_id"); // ビデオ ID。 aliyunVidSts.setAccessKeyId("<yourAccessKeyId>"); // 一時的な STS トークンの AccessKey ID。トークンを取得するには、STS の AssumeRole 操作を呼び出す必要があります。 aliyunVidSts.setAccessKeySecret("<yourAccessKeySecret>"); // 一時的な STS トークンの AccessKey Secret。トークンを取得するには、STS の AssumeRole 操作を呼び出す必要があります。 aliyunVidSts.setSecurityToken("<yourSecurityToken>"); // セキュリティトークン。トークンを取得するには、STS の AssumeRole 操作を呼び出す必要があります。 aliyunVidSts.setRegion("your_region_id"); // VOD がアクティベートされているリージョンの ID。デフォルト値:cn-shanghai。 // VOD コンソールでパラメーターパススルー付きの HLS 暗号化を有効にし、デフォルトのパラメーター名が MtsHlsUriToken の場合、config パラメーターを設定して VidSts オブジェクトに渡す必要があります。詳細については、次のコードをご参照ください。 // VOD コンソールでパラメーターパススルー付きの HLS 暗号化を有効にしていない場合、次のコードを統合する必要はありません。 VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>"); aliyunVidSts.setPlayerConfig(vidConfig); // ダウンロードソースを準備します。 mAliDownloader.prepare(aliyunVidSts);VidAuth
// VidAuth オブジェクトを作成します。 VidAuth vidAuth = new VidAuth(); vidAuth.setVid("あなたのビデオ ID");// ビデオ ID (VideoId)。 vidAuth.setPlayAuth("<yourPlayAuth>");// 再生認証情報。VOD サービスの GetVideoPlayAuth 操作を呼び出して認証情報を生成する必要があります。 vidAuth.setRegion("リージョン");// プレーヤー SDK V5.5.5.0 以降では、このパラメーターは非推奨です。プレーヤーが自動的にリージョンを解析するため、リージョンを設定する必要はありません。プレーヤー SDK V5.5.5.0 より前のバージョンでは、このパラメーターは必須です。VOD サービスがアクティベートされているリージョンを指定します。デフォルト値は cn-shanghai です。 // VOD コンソールで HLS 暗号化パラメーターのパススルーを有効にし、デフォルトのパラメーター名が MtsHlsUriToken の場合、config を設定して VidAuth オブジェクトに渡す必要があります。詳細については、次のコードをご参照ください。 VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>"); vidAuth.setPlayerConfig(vidConfig); // ダウンロードソースを準備します。 mAliDownloader.prepare(vidAuth);
説明ソースファイルのフォーマットと出力ダウンロードファイルのフォーマットは同じで、変更できません。
VOD コンソールで HLS 標準暗号化パラメーターのパススルーを有効にした場合、デフォルトのパラメーター名は MtsHIsUriToken です。詳細については、「HLS 標準暗号化パラメーターのパススルー」をご参照ください。この場合、上記のコードに示すように、VOD ソースに MtsHIsUriToken 値を設定する必要があります。
準備が成功した後、ダウンロード項目を選択してダウンロードを開始します。
準備が成功すると、
OnPreparedListenerメソッドが呼び出されます。返された TrackInfo オブジェクトには、各ビデオストリームの解像度などの情報が含まれています。ダウンロードするトラックを選択できます。コード例を次に示します。public void onPrepared(MediaInfo mediaInfo) { // ダウンロードアイテムの準備に成功 List<TrackInfo> trackInfos = mediaInfo.getTrackInfos(); // 例えば、最初の TrackInfo をダウンロード mAliDownloader.selectItem(trackInfos.get(0).getIndex()); // ダウンロードを開始 mAliDownloader.start(); }(任意) ダウンロードソースの更新
VidSts と VidAuth の有効期限が切れるのを防ぐために、ダウンロードを開始する前にダウンロードソース情報を更新することもできます。コード例は次のとおりです。
// ダウンロードソースを更新 mAliDownloader.updateSource(VidSts); // ダウンロードを開始 mAliDownloader.start();ダウンロードが成功または失敗した後、ダウンローダーを解放します。
ダウンロードが完了した後、
onCompletionまたはonErrorコールバックでreleaseを呼び出してダウンローダーを解放できます。コード例を次に示します。mAliDownloader.stop(); mAliDownloader.release();任意: ダウンロードしたファイルの削除
ダウンロード中またはダウンロード後に、ダウンロードしたファイルを削除できます。コード例は次のとおりです。
// オブジェクトを介してファイルを削除 mAliDownloader.deleteFile(); // 静的メソッドを介して削除。成功した場合、0 を返します AliDownloaderFactory.deleteFile("削除するダウンロードフォルダーのパス", "ビデオ ID", "ビデオフォーマット", "ダウンロードされたビデオのインデックス");
次のステップ
ダウンロードした動画は、ApsaraVideo Player を使用して再生できます。方法は次のとおりです。
ダウンロードが完了した後、ビデオファイルの絶対パスを取得します。
String path = mAliDownloader.getFilePath();UrlSource メソッドを使用して再生用の絶対パスを設定します。
UrlSource urlSource = new UrlSource(); urlSource.setUri("再生 URL");// ダウンロードしたビデオの絶対パスを設定 aliPlayer.setDataSource(urlSource);
暗号化ビデオ再生
ApsaraVideo VOD は、HLS 暗号化、Alibaba Cloud 専用暗号化、および DRM 暗号化をサポートしています。ライブストリーミングは DRM 暗号化のみをサポートしています。暗号化再生の詳細については、「暗号化ビデオ再生」をご参照ください。
ネイティブ RTS 再生
ApsaraVideo Player SDK for Android は、ネイティブ RTS SDK を統合して、ネイティブの低遅延ライブストリーミング機能を実装します。詳細については、「Android での RTS ストリームプルを実装する」をご参照ください。