Alibaba Cloud Player SDK for Android は、RTMP、FLV、HLS などのフォーマットでの標準ライブストリーム再生をサポートしています。このトピックでは、標準のライブストリーム再生を実装する方法について説明します。
特徴、API ドキュメント、よくある質問の詳細については、「Player for Android」をご参照ください。
手順
ステップ 1: SDK の統合
SDK を統合するには、「Player SDK for Android の統合」をご参照ください。
ステップ 2: ライブストリーム再生の実装
開始
基本的な再生を実装するには、「Player for Android のクイックスタート」をご参照ください。
ライブストリームソースの設定
Player SDK for Android は、UrlSource 再生と暗号化再生の 2 つのライブストリーム再生メソッドをサポートしています。
UrlSource を使用したライブストリーム再生
UrlSource メソッドを使用してライブストリームを再生するには、プレーヤーの setUrl プロパティをストリーミング URL に設定します。URL は、サードパーティのストリーミング URL または ApsaraVideo Live のストリーミング URL にすることができます。
URL ジェネレーターを使用して、コンソールで ApsaraVideo Live ストリーミング URL を生成できます。詳細については、「URL ジェネレーター」をご参照ください。
UrlSource urlSource = new UrlSource(); urlSource.setUri("Playback URL");// 再生 URL。これは、サードパーティのストリーミング URL または ApsaraVideo Live のストリーミング URL にすることができます。 aliPlayer.setDataSource(urlSource);DRM 暗号化によるライブストリーム再生
DRM 暗号化によるライブストリーム再生の詳細については、「暗号化されたビデオを再生する方法」をご参照ください。
複数の解像度の設定
説明この機能は、ApsaraVideo Live の再生 URL またはトランスコードされたストリーム URL をサポートします。デフォルトおよびカスタムのトランスコーディングがサポートされています。ライブストリームトランスコーディングの詳細については、「トランスコーディング管理」をご参照ください。URL の取得方法については、「アップストリーミング URL とストリーミング URL の生成」をご参照ください。
Alibaba Real-Time Communication (ARTC) または FLV プロトコルを使用するライブストリームでは、異なる解像度間の切り替えがサポートされています。
アップストリーミングの GOP (group of pictures) サイズを 1 s または 2 s に設定します。サイズが大きいと、ストリームを切り替えるときにジャンプが発生する可能性があります。
再生ドメイン名については、次のオプションを有効にします: FLV 再生中の RTMP タイムスタンプの出力、およびアップストリーム切断後の RTMP タイムスタンプの出力。トランスコーディング設定については、次のオプションを有効にします: タイムスタンプはソースに従う、およびキーフレームはソースに従う。そうしないと、ストリームの切り替えが途切れたり失敗したりします。これらのオプションを有効にするには、チケットを送信してください。
上記の要件を満たさないストリーム URL への切り替えは失敗します。
スイッチの定義
switchStreamメソッドを呼び出して解像度を切り替えることができます。新しい解像度に対応する URL を渡します。aliPlayer.switchStream(newUrl);定義切り替えの通知
解像度の切り替えが成功または失敗すると、プレーヤーはコールバックを返します。
aliPlayer.setOnStreamSwitchedListener(new IPlayer.OnStreamSwitchedListener() { @Override public void onSwitchedSuccess(String url) { Log.i("SwitchStream", "switch success, url = " + url); } @Override public void onSwitchedFail(String url, ErrorInfo errorInfo) { Log.i("SwitchStream", "switch failed, url = " + url + ", error=" + errorInfo.getMsg()); } });