このトピックでは、Push SDK for Androidを使用する方法と、SDKのクラスとメソッドについて説明します。 このトピックでは、Push SDK for Androidが提供する機能の使用例についても説明します。 このトピックを読むことで、SDKをライブストリーミングに使用する方法をよりよく理解できます。
モバイルデバイスでストリームを取り込む方法の詳細については、「ストリーム取り込み、ストリームプル、およびストリーミング」をご参照ください。
特徴
RTMP (Real-Time Messaging Protocol) によるストリーム取り込みをサポートします。
リアルタイム通信 (RTC) に基づくリアルタイムストリーミング (RTS) プロトコルを介したストリームの取り込みとストリームのプルをサポートします。
共同ストリーミングと戦闘をサポートします。
ビデオエンコーディングにH.264、オーディオエンコーディングにAdvanced Audio Coding (AAC) を採用します。
ビットレート制御、解像度、表示モードなどの機能のカスタム設定をサポートします。
さまざまなカメラ操作をサポートします。
リアルタイムのレタッチをサポートし、レタッチ効果を調整できます。
アニメーションステッカーをアニメーション透かしとして追加し、アニメーションステッカーを削除できます。
画面録画をストリーミングできます。
YUVやパルス符号変調 (PCM) など、さまざまな形式の外部オーディオおよびビデオ入力をサポートします。
複数のストリームの混合をサポートします。
オーディオのみとビデオのみのストリームの取り込みと、バックグラウンドでのストリーム取り込みをサポートします。
バックグラウンドミュージックをサポートし、バックグラウンドミュージックを管理できます。
ビデオスナップショットのキャプチャをサポートします。
自動再接続とエラー処理をサポートします。
オーディオ3Aアルゴリズムをサポートします。
ビデオファイルのソフトウェアとハードウェアのエンコードモードを切り替えることができます。 これは、符号化モジュールの安定性を改善します。
Android用プッシュSDKのクラス
クラス | 説明 |
AlivcLivePushConfig | ストリーム取り込み設定のクラス。The class for stream ingest settings. |
AlivcLivePusher | ストリーム取り込み機能のクラス。The class for stream ingest features. |
AlivcLivePusherErrorListener | エラーコールバックのクラス。 |
AlivcLivePusherNetworkListener | ネットワークコールバックのクラス。 |
AlivcLivePusherInfoListener | ストリーム取り込みコールバックのクラスです。 |
AlivcLivePusherBGMListener | BGMコールバックのクラス。 |
AlivcLivePushCustomFilter | カスタムフィルターのコールバックのクラス。 |
AlivcLivePushCustomDetect | カスタム顔検出コールバックのクラス。 |
AlivcSnapshotListener | スナップショットコールバックのクラス。 |
制限事項
Push SDK for Androidを使用する前に、次の制限事項に注意してください。
ストリームの取り込み前に画面の向きを設定する必要があります。 ライブストリーミング中は画面を回転できません。
ランドスケープモードでのストリーム取り込みの自動画面回転を無効にする必要があります。
ハードウェア符号化モードでは、出力解像度の値は、エンコーダと互換性があるように16の倍数でなければならない。 たとえば、解像度を540pに設定すると、出力解像度は544 × 960になります。 黒いバーを防ぐために、出力解像度に基づいてプレーヤーの画面サイズをスケーリングする必要があります。
手順
次の表に、Push SDK for Androidの基本エディションの使用方法を示します。
ステップ | 説明 | 関連ドキュメント |
1. SDKを登録します。 | ライセンス関連のパラメーターを設定して、Push SDK for Androidを登録します。 登録機能を呼び出さない場合、ストリーム取り込み機能は使用できません。 | |
2. ストリーム取り込みパラメーターを設定します。 | 基本パラメータ、ビットレート制御モード、適応解像度機能、レタッチ機能などのストリーム取り込み設定を完了します。 | |
3. Android用プッシュSDKを使用してストリームを取り込みます。 | Push SDK for Androidを初期化し、ストリーム取り込みコールバックを登録し、プレビュービューを作成した後、ストリームの取り込みを開始できます。 ビジネス要件に基づいて、ストリームの管理、BGMの設定、カメラ設定の設定、外部オーディオソースの取り込み、アニメーションステッカーの追加を行うことができます。 重要
| |
4. (オプション) 画面録画のストリーム取り込みを設定します。 | 画面録画をストリーミングする場合は、画面録画のストリーム取り込みを設定します。 |
次の表に、Push SDK for Androidのインタラクティブエディションの使用方法を示します。
ステップ | 説明 | 関連ドキュメント |
1. SDKを登録します。 | ライセンス関連のパラメーターを設定して、Push SDK for Androidを登録します。 登録機能を呼び出さない場合、ストリーム取り込み機能は使用できません。 | |
2. コストリーミング設定を構成します。 | コストリーミング設定を設定すると、Android用Push SDKのインタラクティブエディションを使用することで、ストリーマーとビューアは300ミリ秒未満の超低レイテンシで相互作用できます。 |
SDKの登録
Push SDK for Android V4.4.2以降では、オールインワンライセンスが使用されます。 ストリーム取り込み機能を使用する前に、Push SDK for Androidを登録する必要があります。 詳細については、「プッシュSDKライセンスの統合」をご参照ください。
ストリーム取り込みパラメーターの設定 (基本版)
AlivcLivePushConfigクラスを使用して、ストリーム取り込みパラメーターを設定できます。 各パラメーターにはデフォルト値が設定されてます。 ビジネス要件に基づいてパラメーターの値を変更できます。 各パラメーターのデフォルト値と有効な値の詳細については、 Push SDK for Android V6.9.0 (基本版) のAPIリファレンスまたはPush SDK for Android V6.9.0 (インタラクティブ版) のAPIリファレンスをご参照ください。
ストリームの取り込み中にこれらのパラメーターをリアルタイムで変更するには、AlivcLivePusherクラスで提供されるメソッドを参照してください。
基本的なストリーム取り込み設定を完了します。
基本的なストリーム取り込み設定に使用されるすべてのパラメータにはデフォルト値があります。 デフォルト値の使用を推奨します。
重要携帯電話のパフォーマンスとネットワーク帯域幅要件に基づいて、解像度を540pに設定することを推奨します。 ほとんどの場合、ライブストリーミング用の主流アプリは540pを使用します。
適応ビットレートストリーミングが無効になっている場合、ビットレートは初期値に固定され、指定されたターゲットビットレートと最小ビットレートの間で自動的に調整されません。 この場合、ネットワークが不安定なときに吃音が発生する可能性があります。 この機能を無効にする前に注意してください。
ビットレート制御モードを指定します。
AlivcQualityModeEnumパラメーターを設定して、ビットレート制御モードを指定できます。 Push SDK for Androidは、複数のビットレート制御モードを提供します。 ビジネス要件に基づいて各パラメーターの値を指定します。 次の表に、ビットレート制御モードを示します。
ビットレート制御モード
説明
サンプルコード
QM_RESOLUTION_FIRST
品質-最初のモード。 Push SDK for Androidは、ビデオストリームの品質を優先するようにビットレートパラメータを設定します。
mAlivcLivePushConfig.setQualityMode(AlivcQualityModeEnum.QM_RESOLUTION_FIRST); // Set the mode to quality-first.
QM_FLUENCY_FIRST
滑らかさ-最初のモード。 Push SDK for Androidは、ビデオストリームの滑らかさを優先するビットレートパラメータを設定します。
mAlivcLivePushConfig.setQualityMode(AlivcQualityModeEnum.QM_FLUENCY_FIRST);// Set the mode to smoothness-first.
QM_CUSTOM
カスタムモード。 Push SDK for Androidは、カスタム設定に基づいてビットレートパラメータを設定します。 カスタムモードを使用する場合は、ビジネス要件に基づいてquality-firstまたはsmoothness-firstを選択し、初期ビットレート、最小ビットレート、および目標ビットレートを指定できます。
initialVideoBitrate: ライブストリーム開始時の初期ビットレート。
minVideoBitrate: 悪いネットワーク条件では、ビットレートは吃音を防ぐために最小ビットレートまで徐々に低下します。
targetVideoBitrate: 良好なネットワーク条件では、ビデオストリームの品質を向上させるために、ビットレートがターゲットビットレートまで徐々に増加します。
mAlivcLivePushConfig.setQualityMode(AlivcQualityModeEnum.QM_CUSTOM); mAlivcLivePushConfig.setTargetVideoBitrate(1000); // The target bitrate is 1,000 Kbit/s. mAlivcLivePushConfig.setMinVideoBitrate(300); // The minimum bitrate is 300 Kbit/s. mAlivcLivePushConfig.setInitialVideoBitrate(800); // The initial bitrate is 800 Kbit/s.
説明quality-firstまたはsmoothness-firstモードを使用する場合、initialVideoBitrate、minVideoBitrate、およびtargetVideoBitrateパラメーターを設定する必要はありません。 Push SDKは、ネットワークジッタが発生したときにビデオストリームの品質または滑らかさを保証します。
カスタムモードを使用する場合は、推奨設定に基づいてビットレートパラメータを設定します。 推奨設定を次の表に示します。
表 1. 推奨設定のカスタムビットレート品質-ファーストモード
解像度
initialVideoBitrate
minVideoBitrate
targetVideoBitrate
360p
600
300
1000
480p
800
300
1,200
540p
1000
600
1400
720p
1500
600
2000
1080p
1800
1,200
2,500
表 2. 滑らかさ-ファーストモードでのカスタムビットレートの推奨設定
解像度
initialVideoBitrate
minVideoBitrate
targetVideoBitrate
360p
400
200
600
480p
600
300
800
540p
800
300
1000
720p
1000
300
1,200
1080p
1500
1,200
2200
アダプティブ解決機能を設定します。
適応解像度機能は、ストリームの解像度を動的に調整するために使用されます。 アダプティブ解像度機能を有効にすると、解像度が自動的に低下し、劣悪なネットワーク条件でビデオストリームの滑らかさと品質が保証されます。 サンプルコード:
mAlivcLivePushConfig.setEnableAutoResolution(true); // Specify whether to enable adaptive resolution. The default value is false.
重要アダプティブ解決機能は、すべてのプレイヤーでサポートされていません。 この機能を使用する必要がある場合は、ApsaraVideo Playerを使用することを推奨します。
アダプティブ解像度機能は、AlivcQualityModeEnumパラメーターを設定することにより、quality-firstモードまたはsmoothness-firstモードを使用する場合にのみ有効になります。 カスタムモードを使用する場合、この機能は使用できません。
レタッチ機能を設定します。
Push SDK for Androidでレタッチ機能を使用するには、レタッチライブラリをインポートしてコールバックを設定する必要があります。
Maven依存関係を使用してレタッチライブラリとレタッチパネルをインポートします。 プロジェクトのbuild.gradleファイルに次のコードを追加し、最新バージョンのQueen SDKのデモを指定します。
implementation "com.aliyun.maliang.android:queen:2.5.0-official-full" implementation("com.aliyun.maliang.android:queen_menu:2.5.0-official-full") { exclude group: 'com.aliyun.maliang.android', module: 'queen' }
次の表では、統合できるデモで提供されているLiveBeautyモジュールについて説明します。
ファイルまたはフォルダ
説明
live_beauty
レタッチ用の抽象クラス。
queen_beauty
レタッチ用のユーザーインターフェイス (UI) ウィジェット。
顔認識とレタッチのコールバックを設定します。
サードパーティのレタッチライブラリにアクセスする場合は、setCustomDetectコールバックとsetCustomFilterコールバックを設定できます。
AlivcLivePushCustomDetectのcustomDetectProcessコールバックによって返されるdataパラメーターは、データを収集するためのポインターとして使用されます。 コールバックには、long data、int width、int height、int rotation、int format、およびlong extraパラメーターが含まれます。 サードパーティのレタッチライブラリは、返されたデータを識別または処理できます。
AlivcLivePushCustomFilterのcustomFilterProcessコールバックによって返されるinputTextureパラメーターは、サードパーティのレタッチライブラリで処理できる画像テクスチャを指定します。 コールバックには、int inputTexture、inttextureWidth、int textureHeight、およびlong extraパラメーターが含まれます。 処理されたテクスチャを返す場合は、テクスチャIDが返されます。 それ以外の場合、inputTextureの値が返されます。
背景ストリーム取り込み用の画像を指定します。
Push SDK for Androidを使用すると、アプリがバックグラウンドに切り替えられたとき、またはビットレートが低いときに画像を取り込むことができます。 ユーザーエクスペリエンスが向上します。 アプリをバックグラウンドに切り替えると、ビデオストリームの取り込みが一時停止されます。 この場合、オーディオストリームのみが取り込まれる。 取り込みたいイメージを指定することもできます。 たとえば、次のようなメッセージを含む画像を取り込むことができます。The streamer will be back soon. は視聴者に通知するために表示されます。 サンプルコード:
mAlivcLivePushConfig.setPausePushImage("The path of the specified image in the PNG format for stream ingest"); // Specify the image for stream ingest when your app is switched to the background.
ネットワーク条件が悪い場合は、ストリーム取り込み用の静的イメージを指定できます。 ビットレートが低い場合は、吃音を防ぐために指定した画像が取り込まれます。 サンプルコード:
mAlivcLivePushConfig.setNetworkPoorPushImage("The path of the specified image that is ingested in poor network conditions");// Specify the image for stream ingest in poor network conditions.
透かしを設定します。
Push SDK for Androidを使用すると、1つ以上の透かしを追加できます。 透かしはPNG形式でなければなりません。 サンプルコード:
mAlivcLivePushConfig.addWaterMark(waterPath,0.1,0.2,0.3); // Add a watermark.
説明x、y、およびwidthパラメータの値は相対的なものです。 たとえば、xパラメータの値0.1は、透かしの左端がストリームのx軸上の10% 位置にあることを示します。 したがって、ストリーム解像度が540 × 960である場合、xパラメータの値は54である。
透かしの高さは、ソース画像の幅および高さ、ならびに透かしの入力幅値に基づいてスケーリングされる。
テキスト透かしを追加する場合は、テキストを画像に変換し、addWaterMarkメソッドを呼び出して画像を透かしとして追加します。
プレビューモードを指定します。
Push SDK for Androidは、次のプレビューモードをサポートしています。 プレビューモードは、ストリーム取り込みには影響しません。
AlivcPreviewDisplayMode.ALIVC_LIVE_PUSHER_PREVIEW_SCALE_FILL: このモードでは、ビデオはプレビューウィンドウ全体に表示されます。 ビデオのアスペクト比がプレビューウィンドウのアスペクト比と同じでない場合、プレビュー中に変形が発生します。
AlivcPreviewDisplayMode.ALIVC_LIVE_PUSHER_PREVIEW_ASPECT_FIT: このモードでは、プレビュー時にビデオの元のアスペクト比が使用されます。 ビデオのアスペクト比がプレビューウィンドウのアスペクト比と同じでない場合、プレビューウィンドウに黒いバーが表示されます。
AlivcPreviewDisplayMode.ALIVC_LIVE_PUSHER_PREVIEW_ASPECT_FILL: このモードでは、プレビュー中にビデオがプレビューウィンドウに合うようにトリミングされます。 ビデオのアスペクト比がプレビューウィンドウのアスペクト比と同じでない場合、ビデオはトリミングされます。
サンプルコード:
mAlivcLivePushConfig.setPreviewDisplayMode(AlivcPreviewDisplayMode.ALIVC_LIVE_PUSHER_PREVIEW_ASPECT_FIT);
Android用プッシュSDKを使用してストリームを取り込む (基本版)
AlivcLivePusherは、Android用Push SDKのコアクラスです。 このクラスは、初期化、ストリーム取り込みコールバック、カメラプレビュー、およびストリーム取り込み管理のパラメーターを提供します。 このクラスを使用して、ストリームの取り込み中にパラメーターを変更することもできます。
クラスでメソッドを使用する場合は、try-catchステートメントを実行して例外を管理します。
指定した順序でメソッドを呼び出す必要があります。 メソッドを無効な順序で呼び出すと、エラーが発生する可能性があります。
AlivcLivePusherクラスを初期化します。
ストリーム取り込みパラメーターを設定した後、initメソッドを呼び出してクラスを初期化します。 サンプルコード:
AlivcLivePusher mAlivcLivePusher = new AlivcLivePusher(); mAlivcLivePusher.init(mContext, mAlivcLivePushConfig);
説明AlivcLivePusherクラスは複数のインスタンスをサポートしていません。 したがって、initメソッドの呼び出しごとにdestroyメソッドを1回呼び出す必要があります。
ストリーム取り込みコールバックを登録します。
次のストリーム取り込みコールバックがサポートされています。
Info: 通知とステータス検出に使用されるコールバック。
エラー: エラーが発生したときに返されるコールバック。
ネットワーク: ネットワークに関連するコールバック。
イベントが発生すると、対応するコールバックがトリガーされ、イベントが通知されます。 サンプルコード:
プレビューを開始します。
livePusherオブジェクトを初期化し、コールバックを設定した後、プレビューを開始できます。 カメラのプレビューにSurfaceViewパラメータを使用します。 サンプルコード:
mAlivcLivePusher.startPreview(mSurfaceView)// Start preview. You can also call the asynchronous method startPreviewAysnc to start preview based on your business requirements.
重要バックグラウンドミュージックやカメラコントロールのメソッドなど、プレビューの設定後にのみ呼び出すことができます。 ストリーム取り込みを開始する前にプレビューを実行することを推奨します。
ストリームの取り込みを開始します。
プレビューが成功した後にのみ、ストリームの取り込みを開始できます。 したがって、onPreviewStartedコールバックを設定し、次のコードをコールバックに追加する必要があります。
mAlivcLivePusher.startPush(mPushUrl);
説明Android用Push SDKを使用すると、startPushAsyncを呼び出して非同期でストリームの取り込みを開始できます。
Push SDK for Androidは、RTMP形式とRTS形式の取り込みURLをサポートしています。 RTMPフォーマットの取り込みURLと比較して、RTSフォーマットの取り込みURLは、改善された安定性を提供し、劣悪なネットワーク条件でより良好に動作する。 取り込みURLをRTS形式で使用することを推奨します。 RTMP形式とRTS形式の取り込みURLの比較、およびRTS経由でストリームを取り込む方法の詳細については、「プッシュSDKを使用してRTS経由でストリームを取り込む」をご参照ください。
有効な取り込みURLを使用してストリームの取り込みを開始した後、ApsaraVideo player、FFplay、VLCなどのプレーヤーを使用してストリームのプルをテストできます。 ストリーミングURLの取得方法については、「取り込みURLとストリーミングURLの生成」をご参照ください。
他のストリーム取り込み設定を完了します。
Push SDK for Androidを使用すると、ストリームの取り込みを管理できます。 たとえば、ストリーム取り込みの開始、停止、再起動、一時停止、再開、ストリーム取り込みインスタンスのプレビューの停止、および破棄ができます。 これらの操作を実行するボタンを追加できます。
バックグラウンドミュージックを管理します。
Android用プッシュSDKを使用すると、バックグラウンドミュージックを管理できます。 たとえば、バックグラウンドミュージックの再生、オーディオミキシング、ノイズリダクション、インイヤーモニタリング、ミュートなどの機能を設定できます。 サンプルコード:
/* Start the playback of background music. */ mAlivcLivePusher.startBGMAsync(mPath); /* Stop the playback of background music. If you want to change the background music, call the method that is used to start the playback of background music. You do not need to stop the playback of the current background music. */ mAlivcLivePusher.stopBGMAsync(); /* Pause the playback of background music. You can call this method only after the playback of background music starts. */ mAlivcLivePusher.pauseBGM(); /* Resume the playback of background music. You can call this method only after the playback of background music is paused. */ mAlivcLivePusher.resumeBGM(); /* Enable looping. */ mAlivcLivePusher.setBGMLoop(true); /* Configure noise reduction. If you enable noise reduction, the system filters out non-vocal parts from the collected audio. This feature may slightly reduce the volume of the human voice. We recommend that you allow your users to determine whether to enable this feature. By default, this feature is disabled. */ mAlivcLivePusher.setAudioDenoise(true); /* Configure in-ear monitoring. In-ear monitoring is suitable for scenarios that involve karaoke. If you enable in-ear monitoring, you can hear your voice on your earphones during streaming. If you disable in-ear monitoring, you cannot hear your voice on your earphones during streaming. This feature does not take effect if no earphones are detected. */ mAlivcLivePusher.setBGMEarsBack(true); /* Configure audio mixing. You can adjust the volumes of the background music and human voice. */ mAlivcLivePusher.setBGMVolume(50); // Specify the volume of the background music. mAlivcLivePusher.setCaptureVolume(50); // Specify the volume of the human voice. /* Configure muting. If you enable this feature, the background music and human voice are muted. To separately mute the background music or human voice, call the method that is used to configure audio mixing. */ mAlivcLivePusher.setMute(true);
重要メソッドを呼び出してバックグラウンドミュージックを管理できるのは、プレビューの開始後のみです。
ストリーム取り込みスナップショットを設定します。
Android用Push SDKを使用すると、ローカルのビデオストリームのスナップショットをキャプチャできます。 サンプルコード:
// Configure the video stream snapshots by setting relevant parameters, including the number of snapshots, the interval between two snapshots, and the callback. pusher.snapshot(1, 1, new AlivcSnapshotListener() { @Override public void onSnapshot(Bitmap bmp) { // You can dump each snapshot as a local PNG file. Sample code: String dateFormat = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss-SS").format(new Date()); File f = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "snapshot-" + dateFormat + ".png"); if (f.exists()) { f.delete(); } try { FileOutputStream out = new FileOutputStream(f); bmp.compress(Bitmap.CompressFormat.PNG, 90, out); out.flush(); out.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } });
カメラ関連の操作を実行します。
カメラ関連の操作は、ストリーミング、一時停止、または再接続の状態で実行できます。 たとえば、フロントカメラとリアカメラを切り替えて、フラッシュ、焦点距離、ズーム、ミラーリングモードを設定できます。 サンプルコード:
/* Switch between the front and rear cameras. */ mAlivcLivePusher.switchCamera(); /* Enable or disable flash. You cannot enable flash for the front camera. */ mAlivcLivePusher.setFlash(true); /* Adjust the focal length to zoom in or out. Valid values of the focal length: [0,getMaxZoom()]. */ mAlivcLivePusher.setZoom(5); /* Configure manual focus. To configure manual focus, you must set the following parameters: point and autoFocus. The point parameter specifies the coordinates of the focus point. The autoFocus parameter specifies whether to enable autofocus. The autoFocus parameter takes effect only for this call. Whether autofocus is enabled otherwise varies based on the setAutoFocus method. */ mAlivcLivePusher.focusCameraAtAdjustedPoint(x, y, true); /* Configure autofocus. */ mAlivcLivePusher.setAutoFocus(true); /* Configure the mirroring mode. The methods for mirroring are PushMirror and PreviewMirror. The PushMirror method is used to enable the mirroring mode for stream ingest. The PreviewMirror method is used to enable the mirroring mode for preview. PushMirror takes effect only for stream playback, and PreviewMirror takes effect only for preview. */ mAlivcLivePusher.setPreviewMirror(false); mAlivcLivePusher.setPushMirror(false);
重要メソッドを呼び出して、プレビューの開始後にのみカメラ関連の操作を実行できます。
外部オーディオおよびビデオソースを設定します。
Push SDK for Androidを使用すると、ストリーム取り込み用の外部オーディオおよびビデオソースをインポートできます。 たとえば、オーディオまたはビデオファイルを取り込むことができます。
外部オーディオおよびビデオソースを設定します。
サンプルコード:
/** * Import custom audio data. * @param data The byte array of the audio data. * @param size * @param sampleRate * @param channels * @param pts The presentation timestamp (PTS) of audio. Unit: microseconds. * This method does not configure the time sequence. You must manually configure the time sequence of input audio frames. */ mAlivcLivePusher. inputStreamAudioData(byte[] data, int size, int sampleRate, int channels, long pts); /** * Import custom audio data. * @param dataptr The pointer of the native memory for the audio data. * @param size * @param sampleRate * @param channels * @param pts The PTS of audio. Unit: microseconds. * This method does not configure the time sequence. You must manually configure the time sequence of input audio frames. */ mAlivcLivePusher. inputStreamAudioPtr(long dataPtr, int size, int sampleRate, int channels, long pts);
外部ビデオデータをインポートします。
サンプルコード:
/** * Import a custom video stream. * * @param data The byte array of the video. * @param width The width of the video. * @param height The height of the video. * @param size The size of the video. * @param stride The stride of the video. * @param pts The PTS of the video. Unit: microseconds. * @param rotation The rotation angle of the video. * This method does not configure the time sequence. You must manually configure the time sequence of input video frames. * Note: When you call this method, you must configure setExternMainStream(true,***) in AlivcLivePushConfig. */ mAlivcLivePusher. inputStreamVideoData(byte[] data, int width, int height, int stride, int size, long pts, int rotation); /** * Import a custom video stream. * * @param dataptr The pointer of the native memory for the video. * @param width The width of the video. * @param height The height of the video. * @param stride The stride of the video. * @param size The size of the video. * @param pts The PTS of the video. Unit: microseconds. * @param rotation The rotation angle of the video. * This method does not configure the time sequence. You must manually configure the time sequence of input video frames. * Note: When you call this method, you must configure setExternMainStream(true,***) in AlivcLivePushConfig. */ mAlivcLivePusher. inputStreamVideoPtr(long dataptr, int width, int height, int stride, int size, long pts, int rotation);
外部オーディオデータをインポートします。
サンプルコード:
/** * AlivcImageFormat: the format of the input video. * AlivcSoundFormat: the format of the input audio frames. * Other parameters: To specify the output resolution, the audio sampling rate, and the number of channels, configure setResolution, setAudioSamepleRate, and setAudioChannels in AlivcLivePushConfig. * Note: To import custom video and audio streams, call methods such as inputStreamVideoData and inputStreamAudioData. */ mAlivcLivePushConfig.setExternMainStream(true,AlivcImageFormat.IMAGE_FORMAT_YUVNV12, AlivcSoundFormat.SOUND_FORMAT_S16);
アニメーションステッカーを管理します。
Push SDK for Androidを使用すると、ライブストリームにアニメーションステッカーを追加できます。 アニメーションステッカーは透かしとして使用できます。
アニメーションステッカーを作成するには、デモで提供されているマテリアルを使用および変更できます。 アニメーションステッカーのシーケンスフレーム画像を作成します。 config.jsonファイルで次のパラメーターを設定します。
"du": 2.04,// Specify the duration for which each time the animated sticker is played. "n": "qizi",// Specify the name of the animated sticker. Make sure that the name of the folder in which the animated sticker is stored is the same as the name of the sticker, and the name of each frame ends with a sequence number. Example: qizi0. "c": 68.0,// Specify the number of frames, which is the number of images included in an animated sticker. "kerneframe": 51,// Specify an image as the keyframe. For example, specify the 51st frame as the keyframe in the demo. Make sure that the specified frame exists. "frameArry": [ {"time":0,"pic":0}, {"time":0.03,"pic":1}, {"time":0.06,"pic":2}, ], // Configure the parameters of the animated sticker. In the preceding settings, "time":0,"pic":0 indicates that the first frame qizi0 is displayed 0 seconds after the animated sticker is played. "time":0.03,"pic":1 indicates that the second frame qizi1 is displayed 0.03 seconds after the animated sticker is played. Configure all frames in the animated sticker in the same manner.
説明他のパラメーターについては、デモで提供されているconfig.jsonファイルの値を保持できます。
アニメーションステッカーを追加します。
サンプルコード:
/** * Add an animated sticker. * @param path Specify the path of the animated sticker. The path must include the config.json file. * @param x Specify the starting position on the x-axis. Valid values: 0 to 1.0f. * @param y Specify the starting position on the y-axis. Valid values: 0 to 1.0f. * @param w Specify the width. Valid values: 0 to 1.0f. * @param h Specify the height. Valid values: 0 to 1.0f. * @return id Specify the ID of the sticker. You must specify the ID of a sticker if you want to remove the sticker. */ mAlivcLivePusher.addDynamicsAddons("Path of the sticker", 0.2f, 0.2f, 0.2f, 0.2f);
アニメーションステッカーを削除します。
サンプルコード:
mAlivcLivePusher.removeDynamicsAddons(int id);
他のメソッドを呼び出します。
/* In custom mode, you can change the minimum bitrate and target bitrate in real time. */ mAlivcLivePusher.setTargetVideoBitrate(800); mAlivcLivePusher.setMinVideoBitrate(400); /* Specify whether autofocus is supported. */ mAlivcLivePusher.isCameraSupportAutoFocus(); /* Specify whether flash is supported. */ mAlivcLivePusher.isCameraSupportFlash(); /* Query whether the stream is being ingested. */ mAlivcLivePusher.isPushing(); /* Query the ingest URL. */ mAlivcLivePusher.getPushUrl(); /* Query the stream ingest performance debugging information. For more information about the parameters of stream ingest performance, see the API references or comments in the code. */ mAlivcLivePusher.getLivePushStatsInfo(); /*Query the SDK version number. */ mAlivcLivePusher.getSDKVersion(); /* Specify the log level to filter debugging information. */ mAlivcLivePusher.setLogLevel(AlivcLivePushLogLevelAll); /* Query the status of Push SDK for Android. */ AlivcLivePushStats getCurrentStatus(); /* Query the previous error code. If no error code is returned, ALIVC_COMMON_RETURN_SUCCESS is displayed. */ AlivcLivePushError getLastError();
画面録画用のストリーム取り込みの設定 (基本版)
Push SDK for Androidを使用すると、画面録画をストリーミングできます。 SDKの初期化、プレビューの設定、およびストリームの取り込みの開始後にのみ、画面録画をストリーミングできます。 画面録画をストリーミングするには、次の手順を実行します。
画面録画モードを設定します。
ビジネス要件に基づいて、次の表に示す画面録画モードのいずれかを使用できます。
画面録画モード
必須設定
カメラを無効にして画面を記録する
メソッドを呼び出した後に返されるデータを設定して、AlivcLivePushConfigで画面録画権限を要求します。
カメラを有効にして画面を記録する
説明ストリーマ側でカメラプレビューを有効にします。 視聴者は、カメラを使用して記録されたビデオコンテンツを表示できます。
メソッドを呼び出した後に返されるデータを設定して、AlivcLivePushConfigで画面録画権限を要求します。
StartCameraメソッドを呼び出すときにsurfaceViewを渡します。
カメラを有効にして画面を記録する
説明ストリーマ側のカメラプレビューを無効にします。 視聴者は、カメラを使用して記録されたビデオコンテンツを表示できます。
メソッドを呼び出した後に返されるデータを設定して、AlivcLivePushConfigで画面録画権限を要求します。
surfaceViewで渡す必要なしにStartCameraメソッドを呼び出します。
startCameraMixメソッドを呼び出して、視聴者側のカメラビューの位置を調整します。
画面録画を有効にします。
MediaProjectionはスクリーン記録に使用されます。 画面記録を有効にするには、画面記録のアクセス許可を要求し、AlivcLivePushConfigのsetMediaProjectionPermissionResultDataメソッドを呼び出して、返されたデータを設定する必要があります。 デフォルトでは、カメラは画面録画中は無効になっています。 次のサンプルコードは、返されるデータを設定する方法の例を示しています。
mAlivcLivePushConfig.setMediaProjectionPermissionResultData(resultData)
カメラプレビューを設定します。
画面録画を有効にした後、カメラのプレビュー方法を呼び出すことができます。 サンプルコード:
mAlivcLivePusher.startCamera(surfaceView); // Enable camera preview. mAlivcLivePusher.stopCamera(); // Disable camera preview.
説明画面録画モードでは、surfaceViewのアスペクト比を1:1に設定することを推奨します。 これにより、画面を回転させるときにsurfaceViewのアスペクト比を調整する必要がなくなります。
surfaceViewのアスペクト比を1:1に設定しない場合は、画面を回転させるときにアスペクト比を調整し、カメラプレビューを無効にしてから、カメラプレビューを再度有効にする必要があります。
ストリーマ側でプレビューが不要な場合は、surfaceViewパラメーターをnullに設定します。
カメラストリームミキシングを設定します。
この機能は、視聴者がカメラのプレビューを必要とし、ストリーマ側がカメラのプレビューを必要としない場合に有効にできます。 この機能は、主にゲームシナリオで使用されます。 ストリーマがゲームコンテンツをストリーミングしたくない場合、ストリーマは、ゲームコンテンツの上にカメラビューを表示することができる。 サンプルコード:
/** * @param x The starting position on the x-axis. Valid values: 0 to 1.0f. * @param y The starting position on the y-axis. Valid values: 0 to 1.0f. * @param w The width of the screen. Valid values: 0 to 1.0f. * @param h The height of the screen. Valid values: 0 to 1.0f. * @return */ mAlivcLivePusher.startCameraMix(x, y, w, h); // Enable camera stream mixing. mAlivcLivePusher.stopCameraMix(); // Disable camera stream mixing.
画面回転を設定します。
画面録画モードでは、画面を回転させてポートレートモードとランドスケープモードを切り替えることができます。 サンプルコード:
mAlivcLivePusher.setScreenOrientation(0);
説明画面の向きを変更するときは、アプリケーションレイヤーでOrientationEventListenerを有効にし、向きの設定をsetScreenOrientationメソッドに渡す必要があります。
プライバシー保護を設定します。
この機能により、ストリーマは画面録画中にプライバシーを保護できます。 たとえば、ストリーマーがパスワードを入力する必要がある場合、ストリーマーはこの機能を有効にできます。 ストリーマーがパスワードを入力すると、ストリーマーはこの機能を無効にできます。 サンプルコード:
mAlivcLivePusher.pauseScreenCapture(); // Enable privacy protection. mAlivcLivePusher.resumeScreenCapture(); // Disable privacy protection.
説明AlivcLivePushConfigでsetPausePushImageメソッドを設定した場合、画面記録が一時停止されると指定された画像が表示されます。 この方法を設定しない場合、画面録画が一時停止されたときに最後のフレームが表示されます。
コストリーミング設定の構成 (インタラクティブエディション)
Push SDK V4.4.4以降のインタラクティブエディションは、RTCベースのコストリーミング機能を提供します。 Push SDK V4.4.5以降のインタラクティブエディションは、RTCベースのバトル機能を提供します。 ストリーマーとビューアは、Push SDKのインタラクティブエディションを使用することで、300ミリ秒未満の超低レイテンシで相互作用できます。 インタラクティブストリーミングの詳細については、「共同ストリーミングの開発者ガイド」および「バトルの開発者ガイド」をご参照ください。
使用上の注意
Push SDK for Androidを使用する前に、次の表に記載されている項目に注意してください。
項目 | 説明 |
難読化ルール | 難読化の設定を確認します。 Push SDK for Androidのパッケージ名が難読化リストから削除されていることを確認してください。
|
メソッド呼び出し |
|