このトピックでは、ApsaraVideo Player SDK for Android の高度な機能の使用例について説明します。サポートされている機能とその使用方法の詳細については、「API リファレンス」をご参照ください。
Professional Competence Verification
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 の字幕フォーマットをサポートしています。
コード例は次のとおりです。
字幕を表示するためのビューの作成
字幕フォーマットごとに異なるビューを作成できます。
プレーヤー 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); } });字幕関連リスナーの設定
音声のみの再生
動画再生を無効にして音声のみを再生できます。プレーヤーを準備する前に 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 ソフトウェアデコーディングにフォールバックします。
この機能は、クラウドとクライアントの機能を組み合わせたアダプティブデコーディングの付加価値サービスを有効にした後にのみ有効になります。ライセンスを申請するには、チケットを起票する必要があります。
クラウドとクライアントの機能を組み合わせたアダプティブデコーディングの付加価値サービスには、主に次のものが含まれます。1. クラウドベースのハードウェアデコーディング互換性データの動的配信。2. H.265 ストリームから H.264 ストリームへのアダプティブフォールバック。
付加価値サービスが有効になっていなくても、ハードウェアデコーディングが失敗した場合、SDK は自動的にソフトウェアデコーディングに切り替えることができます。
次のコードは、バックアップストリームを設定する方法を示しています。
// アプリケーション層は、元の URL とバックアップ URL のすべてのキーと値のペアを格納するマップを維持します。切り替え時に、元の URL に基づいてマップ内のバックアップ 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);スナップショットの取得
Android 向け ApsaraVideo Player SDK は、再生中の動画のスナップショット機能を提供します。この機能は、snapshot API 操作によって実装されます。生データをキャプチャし、bitmap として返します。コールバックインターフェイスは OnSnapShotListener です。以下にコード例を示します。
// スナップショットコールバックを設定します。
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/ja/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 が V7.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 が V7.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/ja/vod/user-guide/configure-url-signing">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 は、ローカルキャッシュ機能を提供します。この機能は、ユーザーが動画を再再生する際の起動速度、シーク速度を向上させ、途切れを減らすと同時に、トラフィックも節約します。
ローカルキャッシュの有効化
ローカルキャッシュ機能は、デフォルトで無効になっています。 使用するには、手動で有効にする必要があります。 これは、enableLocalCache によって、AliPlayerGlobalSettings 内で制御されます。 以下にコード例を示します。
ビデオ再生 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 のローカルキャッシュ機能を有効または無効にする場合は、player config で設定できます。
// まず、設定を取得します。
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 動画再生シナリオでは、インテグレーターは現在再生中の動画と同じ解像度のストリームをプリロードできます。また、ビジネスニーズに基づいてプリロードモードを選択することもできます。
ダウンロード速度の取得
`onInfo` コールバックで、現在再生中の動画のダウンロード速度を取得できます。この取得には getExtraValue API 操作を使用します。次のコードはその例です。
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 クラスで一度設定することを推奨します。コード例は次のとおりです。
// encryptedApp.dat ファイルを電話機に保存し、ここで暗号化ファイルのローカルファイルパスを設定することを推奨します。 PrivateService.initService(getApplicationContext(), "encryptedApp.dat があるファイルパス");ダウンローダーの作成と設定
AliDownloaderFactory を使用してダウンローダーを作成できます。コード例は次のとおりです。
AliMediaDownloader mAliDownloader = null; ...... // ダウンローダーを作成します。 mAliDownloader = AliDownloaderFactory.create(getApplicationContext()); // ダウンロードの保存パスを設定します。 mAliDownloader.setSaveDir("保存フォルダのアドレス");リスナーの設定
ダウンローダーは複数のイベントリスナーを提供します。コード例は次のとおりです。
ダウンロードソースの準備
prepareメソッドを使用してダウンロードソースを準備できます。 ダウンロードソースは VidSts メソッドと VidAuth メソッドをサポートしています。 以下のコードは一例です。VidSts
// VidSts を作成します。 VidSts aliyunVidSts = new VidSts(); aliyunVidSts.setVid("Vid 情報"); // 動画 ID (VideoId)。 aliyunVidSts.setAccessKeyId("<yourAccessKeyId>"); // 一時的な STS トークンの AccessKey ID。STS の AssumeRole API 操作を呼び出して生成する必要があります。 aliyunVidSts.setAccessKeySecret("<yourAccessKeySecret>"); // 一時的な STS トークンの AccessKey Secret。STS の AssumeRole API 操作を呼び出して生成する必要があります。 aliyunVidSts.setSecurityToken("<yourSecurityToken>"); // STS セキュリティトークン。STS の AssumeRole API 操作を呼び出して生成する必要があります。 aliyunVidSts.setRegion("アクセスリージョン"); // ApsaraVideo VOD のアクセスリージョンで、デフォルトは cn-shanghai です。 // VOD コンソールで HLS 標準暗号化パラメーターのパススルーを有効にしており、デフォルトのパラメーター名が MtsHlsUriToken の場合は、以下のように config を設定して vid に渡す必要があります。 // VOD コンソールで HLS 標準暗号化パラメーターのパススルーを有効にしていない場合は、以下のコードを統合する必要はありません。 VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>"); aliyunVidSts.setPlayerConfig(config); // ダウンロードソースを準備します。 mAliDownloader.prepare(aliyunVidSts)VidAuth
// 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 です。 // VOD コンソールで HLS 標準暗号化パラメーターのパススルーを有効にしており、デフォルトのパラメーター名が MtsHlsUriToken の場合は、以下のように config を設定して vid に渡す必要があります。 VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>"); vidAuth.setPlayerConfig(config); // ダウンロードソースを準備します。 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 ストリームプルを実装する」をご参照ください。