すべてのプロダクト
Search
ドキュメントセンター

:機能

最終更新日:Jan 12, 2025

このトピックでは、Android向けプッシュSDKの使用方法と、SDKのクラスとメソッドについて説明します。また、Android向けプッシュSDKで提供される機能の使用方法の例も示します。このトピックを読むことで、ライブストリーミングにSDKを使用する方法をより深く理解できます。

説明

モバイルデバイスでのストリームの取り込み方法の詳細については、「ストリームの取り込み、ストリームのプッシュ、およびストリーミング」をご参照ください。

機能

  • リアルタイムメッセージングプロトコル(RTMP)を介したストリームの取り込みをサポートします。

  • リアルタイムコミュニケーション(RTC)に基づくリアルタイムストリーミング(RTS)プロトコルを介したストリームの取り込みとストリームのプッシュをサポートします。

  • 共同ストリーミングとバトルをサポートします。

  • ビデオエンコーディングには H.264、オーディオエンコーディングには Advanced Audio Coding(AAC)を採用しています。

  • ビットレート制御、解像度、表示モードなどの機能のカスタム設定をサポートします。

  • さまざまなカメラ操作をサポートします。

  • リアルタイムレタッチをサポートし、レタッチ効果を調整できます。

  • アニメーションステッカーをアニメーションウォーターマークとして追加したり、アニメーションステッカーを削除したりできます。

  • 画面録画のストリーミングを可能にします。

  • YUVやパルス符号変調(PCM)などのさまざまな形式の外部オーディオおよびビデオ入力をサポートします。

  • 複数のストリームのミキシングをサポートします。

  • オーディオのみおよびビデオのみのストリームの取り込みと、バックグラウンドでのストリームの取り込みをサポートします。

  • バックグラウンドミュージックをサポートし、バックグラウンドミュージックを管理できます。

  • ビデオスナップショットのキャプチャをサポートします。

  • 自動再接続とエラー処理をサポートします。

  • オーディオ 3A アルゴリズムをサポートします。

  • ビデオファイルのソフトウェアエンコーディングモードとハードウェアエンコーディングモードを切り替えることができます。これにより、エンコーディングモジュールの安定性が向上します。

Android向けプッシュSDKのクラス

クラス

説明

AlivcLivePushConfig

ストリーム取り込み設定用のクラスです。

AlivcLivePusher

ストリーム取り込み機能用のクラスです。

AlivcLivePusherErrorListener

エラーコールバック用のクラスです。

AlivcLivePusherNetworkListener

ネットワークコールバック用のクラスです。

AlivcLivePusherInfoListener

ストリーム取り込みコールバック用のクラスです。

AlivcLivePusherBGMListener

バックグラウンドミュージックコールバック用のクラスです。

AlivcLivePushCustomFilter

カスタムフィルターコールバック用のクラスです。

AlivcLivePushCustomDetect

カスタム顔検出コールバック用のクラスです。

AlivcSnapshotListener

スナップショットコールバック用のクラスです。

制限事項

Android向けプッシュSDKを使用する前に、以下の制限事項に注意してください。

  • ストリーム取り込み前に画面の向きを設定する必要があります。ライブストリーミング中は画面を回転させることはできません。

  • 横向きモードでのストリーム取り込みの場合は、画面の自動回転を無効にする必要があります。

  • ハードウェアエンコーディングモードでは、出力解像度の値はエンコーダーとの互換性のために16の倍数である必要があります。たとえば、解像度を 540p に設定した場合、出力解像度は 544 × 960 になります。黒い帯を防ぐために、出力解像度に基づいてプレーヤーの画面サイズを調整する必要があります。

手順

次の表は、Android向けプッシュSDKの基本版の使用方法を示しています。

手順

説明

参照

1. SDKを登録します。

ライセンス関連のパラメーターを設定して、Android向けプッシュSDKを登録します。登録機能を呼び出さない場合、ストリーム取り込み機能を使用できません。

SDK の登録

2. ストリーム取り込みパラメーターを設定します。

基本パラメーター、ビットレート制御モード、適応解像度機能、レタッチ機能など、ストリーム取り込みの設定を完了します。

ストリーム取り込みパラメーターの設定(基本版)

3. Android向けプッシュSDKを使用してストリームを取り込みます。

Android向けプッシュSDKを初期化し、ストリーム取り込みコールバックを登録し、プレビュービューを作成したら、ストリームの取り込みを開始できます。ビジネス要件に基づいて、ストリームの管理、バックグラウンドミュージックの設定、カメラ設定の設定、外部オーディオソースの取り込み、アニメーションステッカーの追加を行うことができます。

重要
  • ストリームの取り込みを開始する前に、SDKを初期化し、プレビュービューを作成する必要があります。

  • ApsaraVideo Liveでは、複数のストリームを同時に1つのURLに取り込むことはできません。同時に複数のストリームを取り込もうとした場合、最初のストリームのみが取り込まれます。

Android向けプッシュSDKを使用してストリームを取り込む(基本版)

4. (オプション)画面録画のストリーム取り込みを設定します。

画面録画をストリーミングする場合は、画面録画のストリーム取り込みを設定します。

画面録画のストリーム取り込みを設定する(基本版)

次の表は、Android向けプッシュSDKのインタラクティブ版の使用方法を示しています。

手順

説明

参照

1. SDKを登録します。

ライセンス関連のパラメーターを設定して、Android向けプッシュSDKを登録します。登録機能を呼び出さない場合、ストリーム取り込み機能を使用できません。

SDK の登録

2. 共同ストリーミング設定を行います。

共同ストリーミング設定を行った後、ストリーマーと視聴者は、Android向けプッシュSDKのインタラクティブ版を使用して、300ミリ秒未満の超低レイテンシで相互にやり取りできます。

共同ストリーミング設定を行う(インタラクティブ版)

SDK の登録

Android向けプッシュSDK V4.4.2以降では、オールインワンライセンスが使用されます。ストリーム取り込み機能を使用するには、Android向けプッシュSDKを登録する必要があります。詳細については、「プッシュSDKライセンスを統合する」をご参照ください。

ストリーム取り込みパラメーターの設定(基本版)

AlivcLivePushConfigクラスを使用して、ストリーム取り込みパラメーターを設定できます。各パラメーターにはデフォルト値があります。ビジネス要件に基づいてパラメーターの値を変更できます。各パラメーターのデフォルト値と有効値の詳細については、Android向けプッシュSDK V6.9.0 APIリファレンス(基本版)またはAndroid向けプッシュSDK V6.9.0 APIリファレンス(インタラクティブ版)を参照してください。

説明

ストリーム取り込み中にこれらのパラメーターをリアルタイムで変更するには、AlivcLivePusherクラスが提供するメソッドを参照してください。

  1. 基本的なストリーム取り込み設定を完了します。

    基本的なストリーム取り込み設定に使用されるすべてのパラメーターにはデフォルト値があります。デフォルト値を使用することをお勧めします。

    サンプルコード

    // ストリーム取り込み設定用のクラスを初期化します。
    mAlivcLivePushConfig = new AlivcLivePushConfig();
    // ストリーム取り込みモードを指定します。デフォルトでは、通常のストリーム取り込みモードが使用されます。
    mAlivcLivePushConfig.setLivePushMode(AlivcLiveMode.AlivcLiveBasicMode);
    // 解像度を指定します。デフォルトの解像度は 540p です。
    mAlivcLivePushConfig.setResolution(AlivcResolutionEnum.RESOLUTION_540P);
    // フレームレートを指定します。デフォルトのフレームレートは 20 フレーム/秒(FPS)です。
    mAlivcLivePushConfig.setFps(AlivcFpsEnum.FPS_25);
    // グループオブピクチャ(GOP)サイズを指定します。単位:秒。デフォルトのGOPサイズは 2 秒です。
    mAlivcLivePushConfig.setVideoEncodeGop(AlivcVideoEncodeGopEnum.GOP_TWO);
    // 適応ビットレートストリーミングを有効にするかどうかを指定します。デフォルト値は true です。
    mAlivcLivePushConfig.setEnableBitrateControl(true);
    // 画面の向きを指定します。デフォルトの画面の向きは縦向きです。ホームキーを押して向きを左横向きまたは右横向きに変更できる設定を行うことができます。
    mAlivcLivePushConfig.setPreviewOrientation(AlivcPreviewOrientationEnum.ORIENTATION_PORTRAIT);
    // オーディオエンコーディング形式を指定します。デフォルトの形式は AAC-LC です。
    mAlivcLivePushConfig.setAudioProfile(AlivcAudioAACProfileEnum.AAC_LC);
    // ビデオエンコーディングモードを指定します。デフォルトでは、ハードウェアエンコーディングが使用されます。
    mAlivcLivePushConfig.setVideoEncodeMode(AlivcEncodeModeEnum.Encode_MODE_HARD);
    // オーディオエンコーディングモードを指定します。デフォルトでは、ソフトウェアエンコーディングが使用されます。
    mAlivcLivePushConfig.setAudioEncodeMode(AlivcEncodeModeEnum.Encode_MODE_SOFT);
    // フロントカメラを使用するかリアカメラを使用するかを指定します。デフォルトでは、フロントカメラが使用されます。
    mAlivcLivePushConfig.setCameraType(AlivcLivePushCameraTypeEnum.CAMERA_TYPE_FRONT);
    // アプリがバックグラウンドに切り替えられたとき、またはビデオストリームの取り込みが一時停止されたときに取り込まれる画像を指定します。
    mAlivcLivePushConfig.setPausePushImage("TODO: 画像パス");
    // ネットワーク状態が悪いときに取り込まれる画像を指定します。
    mAlivcLivePushConfig.setNetworkPoorPushImage("TODO: 画像パス");
    重要
    • 携帯電話の性能とネットワーク帯域幅の要件に基づいて、解像度を 540p に設定することをお勧めします。ほとんどの場合、ライブストリーミング用の主流アプリは 540p を使用します。

    • 適応ビットレートストリーミングが無効になっている場合、ビットレートは初期値に固定され、指定されたターゲットビットレートと最小ビットレートの間で自動的に調整されません。この場合、ネットワークが不安定なときに途切れが発生する可能性があります。この機能を無効にする前に、注意して進めてください。

  2. ビットレート制御モードを指定します。

    AlivcQualityModeEnum パラメーターを設定して、ビットレート制御モードを指定できます。Android向けプッシュSDKは、複数のビットレート制御モードを提供します。ビジネス要件に基づいて各パラメーターの値を指定します。次の表に、ビットレート制御モードを示します。

    ビットレート制御モード

    説明

    サンプルコード

    QM_RESOLUTION_FIRST

    画質優先モード。Android向けプッシュSDKは、ビデオストリームの画質を優先するようにビットレートパラメーターを設定します。

    mAlivcLivePushConfig.setQualityMode(AlivcQualityModeEnum.QM_RESOLUTION_FIRST); // モードを画質優先に設定します。

    QM_FLUENCY_FIRST

    滑らかさ優先モード。Android向けプッシュSDKは、ビデオストリームの滑らかさを優先するようにビットレートパラメーターを設定します。

    mAlivcLivePushConfig.setQualityMode(AlivcQualityModeEnum.QM_FLUENCY_FIRST);// モードを滑らかさ優先に設定します。

    QM_CUSTOM

    カスタムモード。Android向けプッシュSDKは、カスタム設定に基づいてビットレートパラメーターを設定します。カスタムモードを使用する場合、ビジネス要件に基づいて画質優先または滑らかさ優先を選択し、初期ビットレート、最小ビットレート、ターゲットビットレートを指定できます。

    • initialVideoBitrate:ライブストリーム開始時の初期ビットレート。

    • minVideoBitrate:ネットワーク状態が悪い場合、途切れを防ぐためにビットレートは徐々に最小ビットレートまで低下します。

    • targetVideoBitrate:ネットワーク状態が良い場合、ビデオストリームの画質を向上させるためにビットレートは徐々にターゲットビットレートまで増加します。

    mAlivcLivePushConfig.setQualityMode(AlivcQualityModeEnum.QM_CUSTOM);
    mAlivcLivePushConfig.setTargetVideoBitrate(1000); // ターゲットビットレートは 1,000 Kbit/s です。
    mAlivcLivePushConfig.setMinVideoBitrate(300); // 最小ビットレートは 300 Kbit/s です。
    mAlivcLivePushConfig.setInitialVideoBitrate(800); // 初期ビットレートは 800 Kbit/s です。
    説明
    • 画質優先モードまたは滑らかさ優先モードを使用する場合、initialVideoBitrate、minVideoBitrate、targetVideoBitrateパラメーターを設定する必要はありません。プッシュSDKは、ネットワークジッターが発生した場合にビデオストリームの画質または滑らかさを確保できます。

    • カスタムモードを使用する場合は、推奨設定に基づいてビットレートパラメーターを設定します。次の表に、推奨設定を示します。

    表 1. 画質優先モードのカスタムビットレートの推奨設定

    解像度

    initialVideoBitrate

    minVideoBitrate

    targetVideoBitrate

    360p

    600

    300

    1000

    480p

    800

    300

    1200

    540p

    1000

    600

    1400

    720p

    1500

    600

    2000

    1080p

    1800

    1200

    2500

    表 2. 滑らかさ優先モードのカスタムビットレートの推奨設定

    解像度

    initialVideoBitrate

    minVideoBitrate

    targetVideoBitrate

    360p

    400

    200

    600

    480p

    600

    300

    800

    540p

    800

    300

    1000

    720p

    1000

    300

    1200

    1080p

    1500

    1200

    2200

  3. 適応解像度機能を設定します。

    適応解像度機能は、ストリームの解像度を動的に調整するために使用されます。適応解像度機能を有効にすると、ネットワーク状態が悪い場合にビデオストリームの滑らかさと画質を確保するために解像度が自動的に低下します。サンプルコード:

    mAlivcLivePushConfig.setEnableAutoResolution(true); // 適応解像度を有効にするかどうかを指定します。デフォルト値は false です。
    重要
    • 適応解像度機能はすべてのプレーヤーでサポートされているわけではありません。この機能を使用する必要がある場合は、ApsaraVideo Playerを使用することをお勧めします。

    • 適応解像度機能は、AlivcQualityModeEnumパラメーターを設定して画質優先モードまたは滑らかさ優先モードを使用する場合にのみ有効になります。カスタムモードを使用する場合は、この機能は使用できません。

  4. レタッチ機能を設定します。

    Android向けプッシュSDKでレタッチ機能を使用するには、レタッチライブラリをインポートし、コールバックを設定する必要があります。

    1. Mavenの依存関係を使用して、レタッチライブラリとレタッチパネルをインポートします。Queen SDKデモの最新バージョンを指定して、次のコードをプロジェクトの build.gradle ファイルに追加します。

      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)ウィジェット。

    2. LiveBeautyモジュールを取得します。

      説明

      ライセンスの取得方法については、「Queen SDKのライセンスを取得する」をご参照ください。

      1. clone コマンドを使用して、GitHub からプラグインライブラリのコードをダウンロードします。

        git clone https://github.com/MediaBox-Demos/amdemos-android-live.git
      2. Android Studio プロジェクトのルートディレクトリで、コマンドラインインターフェースを開き、次のコードを実行します。次に、[ファイル] > [新規] > [モジュールのインポート] を選択し、 LiveBeauty モジュールをプロジェクトにインポートします。

        git submodule add https://github.com/MediaBox-Demos/amdemos-android-live.git ***/***/***
        説明

        サンプルコードの ***/***/*** 部分を、LiveBeauty モジュールを保存するパスに置き換えます。

      3. モジュールパスを settings.gradle ファイルに追加します。

        include ':app', ':LiveBeauty', ':LiveBeauty:live_queenbeauty'
        説明

        サンプルコードでは、app はプロジェクトのメインモジュールです。

      4. メインモジュールの build.gradle ファイルに、LiveBeauty 依存関係を追加します。

        dependencies {
            implementation project(':LiveBeauty')
            implementation project(':LiveBeauty:live_queenbeauty')
        }
      5. [ファイル] > [Gradleファイルとプロジェクトを同期] を選択します。同期が完了すると、 LiveBeauty モジュールが使用可能になります。

    3. プラグインのUIを設定します。

      1. QueenBeautyMenu をXMLレイアウトファイルに追加します。

        <com.aliyunsdk.queen.menu.QueenBeautyMenu
            android:id="@+id/beauty_beauty_menuPanel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true" />
      2. アクティビティで QueenBeautyMenu を初期化します。

        // QueenBeautyMenuパネルを初期化します。
        QueenMenuPanel beautyMenuPanel = QueenBeautyMenu.getPanel(context);
        beautyMenuPanel.onHideMenu(); 
        beautyMenuPanel.onHideValidFeatures(); 
        beautyMenuPanel.onHideCopyright(); 
        
        // メニューをレイアウトに追加します。
        QueenBeautyMenu beautyBeautyContainerView = findViewById(R.id.beauty_beauty_menuPanel);
        beautyBeautyContainerView.addView(beautyMenuPanel);
    4. 顔認識とレタッチのコールバックを設定します。

      サードパーティのレタッチライブラリにアクセスする場合は、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の値が返されます。

      サンプルコード

      /**
       * 顔認識のコールバック。
       */
      mAlivcLivePusher.setCustomDetect(new AlivcLivePushCustomDetect() {
          @Override
          public void customDetectCreate() {
      
          }
      
          @Override
          public long customDetectProcess(long dataPtr, int width, int height, int rotation, int format, long extra) {
              return 0;
          }
      
          @Override
          public void customDetectDestroy() {
      
          }
      });
      
      /**
       * レタッチのコールバック。
       */
       
       /**
       * BeautyManagerを初期化します。
       */
      mAlivcLivePusher.setCustomFilter(new AlivcLivePushCustomFilter() {
          @Override
          public void customFilterCreate() {
              initBeautyManager();
          }
      
       /**
       * 取り込まれたストリームを処理し、ビューティー効果を追加します。
       */
          @Override
          public int customFilterProcess(int inputTexture, int textureWidth, int textureHeight, long extra) {
              if (mBeautyManager == null) {
                  return inputTexture;
              }
      
              return mBeautyManager.onTextureInput(inputTexture, textureWidth, textureHeight);
          }    @Override
          public void customFilterDestroy() {
              destroyBeautyManager();
          }
      });
  5. バックグラウンドストリーム取り込み用の画像を指定します。

    Android向けプッシュSDKでは、アプリがバックグラウンドに切り替えられたとき、またはビットレートが低いときに画像を取り込むことができます。これにより、ユーザーエクスペリエンスが向上します。アプリがバックグラウンドに切り替えられると、ビデオストリームの取り込みは一時停止されます。この場合、オーディオストリームのみが取り込まれます。取り込みたい画像を指定することもできます。たとえば、ストリーマーはすぐに戻ります。などのメッセージが表示された画像を取り込んで、視聴者に通知することができます。サンプルコード:

    mAlivcLivePushConfig.setPausePushImage("取り込み用の指定されたPNG形式の画像のパス"); // アプリがバックグラウンドに切り替えられたときのストリーム取り込み用の画像を指定します。

    ネットワーク状態が悪い場合にストリーム取り込み用の静止画像を指定できます。ビットレートが低い場合、途切れを防ぐために指定した画像が取り込まれます。サンプルコード:

    mAlivcLivePushConfig.setNetworkPoorPushImage("ネットワーク状態が悪いときに取り込まれる指定された画像のパス");// ネットワーク状態が悪い場合のストリーム取り込み用の画像を指定します。
  6. ウォーターマークを設定します。

    Android向けプッシュSDKでは、1つまたは複数のウォーターマークを追加できます。ウォーターマークはPNG形式である必要があります。サンプルコード:

    mAlivcLivePushConfig.addWaterMark(waterPath,0.1,0.2,0.3); // ウォーターマークを追加します。
    説明
    • x、y、widthパラメーターの値は相対値です。たとえば、xパラメーターの値が 0.1 の場合、ウォーターマークの左端がストリームのx軸上の 10% の位置にあることを示します。したがって、ストリームの解像度が 540 × 960 の場合、xパラメーターの値は 54 になります。

    • ウォーターマークの高さは、ソース画像の幅と高さ、およびウォーターマークの入力幅の値に基づいて調整されます。

    • テキストウォーターマークを追加する場合は、テキストを画像に変換し、addWaterMarkメソッドを呼び出して画像をウォーターマークとして追加できます。

  7. プレビューモードを指定します。

    Android向けプッシュSDKは、次のプレビューモードをサポートしています。プレビューモードはストリーム取り込みには影響しません。

    • 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向けプッシュSDKのコアクラスです。このクラスは、初期化、ストリーム取り込みコールバック、カメラプレビュー、ストリーム取り込み管理のためのパラメーターを提供します。また、このクラスを使用して、ストリーム取り込み中にパラメーターを変更することもできます。

説明
  • クラスのメソッドを使用する場合は、try-catchステートメントを実行して例外を管理します。

  • メソッドは指定された順序で呼び出す必要があります。無効な順序でメソッドを呼び出すと、エラーが発生する可能性があります。

  1. AlivcLivePusherクラスを初期化します。

    ストリーム取り込みパラメーターを設定した後、initメソッドを呼び出してクラスを初期化します。サンプルコード:

    AlivcLivePusher mAlivcLivePusher = new AlivcLivePusher();
    mAlivcLivePusher.init(mContext, mAlivcLivePushConfig);
    説明

    AlivcLivePusherクラスは複数のインスタンスをサポートしていません。したがって、initメソッドの呼び出しごとに1回、destroyメソッドを呼び出す必要があります。

  2. ストリーム取り込みコールバックを登録します。

    次のストリーム取り込みコールバックがサポートされています。

    • 情報:通知と状態検出に使用されるコールバック。

    • エラー:エラー発生時に返されるコールバック。

    • ネットワーク:ネットワークに関連するコールバック。

    イベントが発生すると、対応するコールバックがトリガーされ、イベントが通知されます。サンプルコード:

    ストリーム取り込みエラーのコールバックを設定する

    /**
     * ストリーム取り込みエラーのコールバックを設定します。
     *
     * @param errorListener エラーのリスナー。
     */
    mAlivcLivePusher.setLivePushErrorListener(new AlivcLivePushErrorListener() {
        @Override
        public void onSystemError(AlivcLivePusher livePusher, AlivcLivePushError error) {
            if (error != null) {
                // UI通知またはカスタムエラーソリューションを追加します。
            }
        }
    
        @Override
        public void onSDKError(AlivcLivePusher livePusher, AlivcLivePushError error) {
            if (error != null) {
                // UI通知またはカスタムエラーソリューションを追加します。
            }
        }
    });
                            

    ストリーム取り込み関連の通知のコールバックを設定する

    /**
     * ストリーム取り込み関連の通知のコールバックを設定します。
     *
     * @param infoListener 通知のリスナー。
     */
    mAlivcLivePusher.setLivePushInfoListener(new AlivcLivePushInfoListener() {
        @Override
        public void onPreviewStarted(AlivcLivePusher pusher) {
            // プレビューの開始を通知します。
        }
    
        @Override
        public void onPreviewStoped(AlivcLivePusher pusher) {
            // プレビューの終了を通知します。
        }
    
        @Override
        public void onPushStarted(AlivcLivePusher pusher) {
            // ストリーム取り込みの開始を通知します。
        }
    
        @Override
        public void onFirstAVFramePushed(AlivcLivePusher alivcLivePusher) {
            // 最初のオーディオおよびビデオパケットが送信されたことを通知します。
        }
    
        @Override
        public void onPushPauesed(AlivcLivePusher pusher) {
            // ストリーム取り込みが一時停止されたことを通知します。
        }
    
        @Override
        public void onPushResumed(AlivcLivePusher pusher) {
            // ストリーム取り込みが再開されたことを通知します。
        }
    
        @Override
        public void onPushStoped(AlivcLivePusher pusher) {
            // ストリーム取り込みの終了を通知します。
        }
    
        @Override
        public void onPushRestarted(AlivcLivePusher pusher) {
            // ストリーム取り込みが再起動されたことを通知します。
        }
    
        @Override
        public void onFirstFramePreviewed(AlivcLivePusher pusher) {
            // 最初のフレームがレンダリングされたことを通知します。
        }
    
        @Override
        public void onDropFrame(AlivcLivePusher pusher, int countBef, int countAft) {
            // フレームが欠落していることを通知します。
        }
    
        @Override
        public void onAdjustBitRate(AlivcLivePusher pusher, int curBr, int targetBr) {
            // ビットレートが調整されたことを通知します。
        }
    
        @Override
        public void onAdjustFps(AlivcLivePusher pusher, int curFps, int targetFps) {
            // フレームレートが調整されたことを通知します。
        }
    
        @Override
        public void onPushStatistics(AlivcLivePusher alivcLivePusher, AlivcLivePushStatsInfo alivcLivePushStatsInfo) {
            // 取り込まれたストリームに関するデータ統計のコールバック。このコールバックは 2 秒ごとに返されます。
        }
    
        @Override
        public void onSetLiveMixTranscodingConfig(AlivcLivePusher alivcLivePusher, boolean isSuccess, String msg) {
            // クラウドベースのストリームミキシング(トランスコーディング)のコールバック。setLiveMixTranscodingConfigメソッドに対応します。このコールバックは、インタラクティブモードでのみ有効になります。
        }
    });

    ネットワーク関連の通知のコールバックを設定する

    /**
     * ネットワーク関連の通知のコールバックを設定します。
     *
     * @param infoListener 通知のリスナー。
     */
    mAlivcLivePusher.setLivePushNetworkListener(new AlivcLivePushNetworkListener() {
        @Override
        public void onNetworkPoor(AlivcLivePusher pusher) {
            // ネットワーク状態が悪いことを通知します。
        }
    
        @Override
        public void onNetworkRecovery(AlivcLivePusher pusher) {
            // ネットワークが回復したことを通知します。
        }
    
        @Override
        public void onReconnectStart(AlivcLivePusher pusher) {
            // 再接続の開始を通知します。
        }
    
        @Override
        public void onConnectionLost(AlivcLivePusher alivcLivePusher) {
            // ネットワークが切断されたことを通知します。
        }
    
        @Override
        public void onReconnectFail(AlivcLivePusher pusher) {
            // 再接続に失敗したことを通知します。
        }
    
        @Override
        public void onReconnectSucceed(AlivcLivePusher pusher) {
            // 再接続に成功したことを通知します。
        }
    
        @Override
        public void onSendDataTimeout(AlivcLivePusher pusher) {
            // データ送信がタイムアウトしたことを通知します。
        }
    
        @Override
        public void onConnectFail(AlivcLivePusher pusher) {
            // 接続に失敗したことを通知します。
        }
    
        @Override
        public String onPushURLAuthenticationOverdue(AlivcLivePusher alivcLivePusher) {
            // 認証の期限が切れたことを通知します。
            return null;
        }
    
        @Override
        public void onSendMessage(AlivcLivePusher alivcLivePusher) {
            // 補足強化情報(SEI)メッセージが送信されたことを通知します。
        }
    
        @Override
        public void onPacketsLost(AlivcLivePusher alivcLivePusher) {
            // ストリーム取り込み中のパケット損失のコールバック。
        }
    });

    バックグラウンドミュージック関連の通知のコールバックを設定する

    /**
     * バックグラウンドミュージック関連の通知のコールバックを設定します。
     *
     * @param pushBGMListener バックグラウンドミュージック関連の通知のリスナー。
     */
    mAlivcLivePusher.setLivePushBGMListener(new AlivcLivePushBGMListener() {
        @Override
        public void onStarted() {
            // バックグラウンドミュージックの再生が開始されたことを通知します。
        }
    
        @Override
        public void onStoped() {
            // バックグラウンドミュージックの再生が停止されたことを通知します。
        }
    
        @Override
        public void onPaused() {
            // バックグラウンドミュージックの再生が一時停止されたことを通知します。
        }
    
        @Override
        public void onResumed() {
            // バックグラウンドミュージックの再生が再開されたことを通知します。
        }
    
        @Override
        public void onProgress(long l, long l1) {
            // 再生進捗状況を通知します。
        }
    
        @Override
        public void onCompleted() {
            // バックグラウンドミュージックの再生が終了したことを通知します。
        }
    
        @Override
        public void onDownloadTimeout() {
            // バックグラウンドミュージックの再生がタイムアウトしたことを通知します。
        }
    
        @Override
        public void onOpenFailed() {
            // ストリームが無効であることを通知します。
        }
    });
  3. プレビューを開始します。

    livePusherオブジェクトを初期化し、コールバックを設定した後、プレビューを開始できます。カメラプレビューにはSurfaceViewパラメーターを使用します。サンプルコード:

    mAlivcLivePusher.startPreview(mSurfaceView)// プレビューを開始します。ビジネス要件に基づいて、非同期メソッドstartPreviewAysncを呼び出してプレビューを開始することもできます。
    重要

    プレビューが設定された後にのみ、バックグラウンドミュージックやカメラ制御などのメソッドを呼び出すことができます。ストリーム取り込みを開始する前にプレビューを実行することをお勧めします。

  4. ストリーム取り込みを開始します。

    プレビューが成功した後でのみ、ストリーム取り込みを開始できます。したがって、onPreviewStartedコールバックを設定し、次のコードをコールバックに追加する必要があります。

    mAlivcLivePusher.startPush(mPushUrl);
    説明
    • Android向けプッシュSDKでは、startPushAsyncを呼び出して、非同期的にストリーム取り込みを開始できます。

    • Android向けプッシュSDKは、RTMP形式とRTS形式の取り込みURLをサポートしています。RTMP形式の取り込みURLと比較して、RTS形式の取り込みURLは安定性が向上し、ネットワーク状態が悪い場合のパフォーマンスが向上します。RTS形式の取り込みURLを使用することをお勧めします。RTMP形式とRTS形式の取り込みURLの比較、およびRTSを介したストリームの取り込み方法の詳細については、「プッシュSDKを使用してRTSを介してストリームを取り込む」をご参照ください。

    • 有効な取り込みURLを使用してストリーム取り込みを開始した後、ApsaraVideo Player、FFplay、VLCなどのプレーヤーを使用して、ストリームプッシュをテストできます。ストリーミングURLの取得方法については、「取り込みURLとストリーミングURLを生成する」をご参照ください。

  5. その他のストリーム取り込み設定を完了します。

    Android向けプッシュSDKでは、ストリーム取り込みを管理できます。たとえば、ストリーム取り込みの開始、停止、再起動、一時停止、再開、プレビューの停止、ストリーム取り込みインスタンスの破棄を行うことができます。これらの操作を実行するためのボタンを追加できます。

    サンプルコード

    /* 取り込み中のストリームを一時停止します。取り込み中のストリームの場合、ビデオプレビューとビデオストリームの取り込みは最後のフレームで一時停止され、オーディオストリームの取り込みは続行されます。 */
    mAlivcLivePusher.pause();
    /* ストリーム取り込みを再開します。ストリーム取り込みを再開すると、オーディオおよびビデオストリームのプレビューと取り込みが再開されます。 */
    mAlivcLivePusher.resume();
    /* 取り込み中のストリームを停止します。 */
    mAlivcLivePusher.stopPush();
    /* プレビューを停止します。この操作は、取り込み中のストリームには影響しません。プレビューが停止すると、プレビューウィンドウは最後のフレームでフリーズします。 */
    mAlivcLivePusher.stopPreview();
    /* ストリームが取り込み中、またはエラーコールバックが発生したときに、ストリーム取り込みを再起動します。エラーが発生した場合、このメソッドまたはreconnectPushAsyncメソッドのみを呼び出して、ストリーム取り込みを再起動できます。destroyメソッドを呼び出して、ストリーム取り込みインスタンスを破棄することもできます。その後、プレビューやストリーム取り込みなどの操作に必要なすべてのALivcLivePusherリソースを再起動できます。 */
    mAlivcLivePusher.restartPush();
    /* ストリームが取り込み中、またはAlivcLivePusherNetworkDelegateに関連するエラーコールバックが発生したときに、このメソッドを呼び出します。エラーが発生した場合、このメソッドまたはrestartPushメソッドのみを呼び出して、ストリーム取り込みを再起動できます。destroyメソッドを呼び出して、ストリーム取り込みインスタンスを破棄することもできます。その後、RTMPを介してストリーム取り込みを再起動できます。 */
    mAlivcLivePusher.reconnectPushAsync();
    /* ストリーム取り込みインスタンスを破棄します。このメソッドを呼び出すと、ストリーム取り込みとプレビューが停止し、プレビューウィンドウが削除されます。AlivcLivePusherに関連するすべてのリソースが破棄されます。 */
    mAlivcLivePusher.destroy();
  6. バックグラウンドミュージックを管理します。

    Android向けプッシュSDKでは、バックグラウンドミュージックを管理できます。たとえば、バックグラウンドミュージックの再生、オーディオミキシング、ノイズリダクション、インイヤーモニタリング、ミュートなどの機能を設定できます。サンプルコード:

    /* バックグラウンドミュージックの再生を開始します。 */
    mAlivcLivePusher.startBGMAsync(mPath);
    /* バックグラウンドミュージックの再生を停止します。バックグラウンドミュージックを変更する場合は、バックグラウンドミュージックの再生を開始するために使用されるメソッドを呼び出します。現在のバックグラウンドミュージックの再生を停止する必要はありません。 */
    mAlivcLivePusher.stopBGMAsync();
    /* バックグラウンドミュージックの再生を一時停止します。このメソッドは、バックグラウンドミュージックの再生が開始された後にのみ呼び出すことができます。 */
    mAlivcLivePusher.pauseBGM();
    /* バックグラウンドミュージックの再生を再開します。このメソッドは、バックグラウンドミュージックの再生が一時停止された後にのみ呼び出すことができます。 */
    mAlivcLivePusher.resumeBGM();
    /* ループを有効にします。 */
    mAlivcLivePusher.setBGMLoop(true);
    /* ノイズリダクションを設定します。ノイズリダクションを有効にすると、システムは収集されたオーディオから非音声部分をフィルタリングします。この機能により、人間の声のボリュームがわずかに低下する可能性があります。ユーザーがこの機能を有効にするかどうかを決定できるようにすることをお勧めします。デフォルトでは、この機能は無効になっています。 */
    mAlivcLivePusher.setAudioDenoise(true);
    /* インイヤーモニタリングを設定します。インイヤーモニタリングは、カラオケを含むシナリオに適しています。インイヤーモニタリングを有効にすると、ストリーミング中にイヤホンで自分の声を聞くことができます。インイヤーモニタリングを無効にすると、ストリーミング中にイヤホンで自分の声を聞くことができません。イヤホンが検出されない場合、この機能は有効になりません。 */
    mAlivcLivePusher.setBGMEarsBack(true);
    /* オーディオミキシングを設定します。バックグラウンドミュージックと人間の声のボリュームを調整できます。 */
    mAlivcLivePusher.setBGMVolume(50); // バックグラウンドミュージックのボリュームを指定します。
    mAlivcLivePusher.setCaptureVolume(50); // 人間の声のボリュームを指定します。
    /* ミュートを設定します。この機能を有効にすると、バックグラウンドミュージックと人間の声がミュートされます。バックグラウンドミュージックまたは人間の声を個別にミュートするには、オーディオミキシングを設定するために使用されるメソッドを呼び出します。 */
    mAlivcLivePusher.setMute(true);
    重要

    プレビューが開始された後にのみ、バックグラウンドミュージックを管理するためのメソッドを呼び出すことができます。

  7. ストリーム取り込みスナップショットを設定します。

    Android向けプッシュSDKでは、ローカルビデオストリームのスナップショットをキャプチャできます。サンプルコード:

    // スナップショットの数、2つのスナップショットの間隔、コールバックなど、関連するパラメーターを設定して、ビデオストリームスナップショットを設定します。
    pusher.snapshot(1, 1, new AlivcSnapshotListener() {
        @Override
        public void onSnapshot(Bitmap bmp) {
                // 各スナップショットをローカルPNGファイルとしてダンプできます。サンプルコード:
            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();
            }
        }
    });
  8. カメラ関連の操作を実行します。

    ストリーミング中、一時停止中、または再接続中の状態では、カメラ関連の操作を実行できます。たとえば、フロントカメラとリアカメラを切り替えたり、フラッシュ、焦点距離、ズーム、ミラーリングモードを設定したりできます。サンプルコード:

    /* フロントカメラとリアカメラを切り替えます。 */
    mAlivcLivePusher.switchCamera();
    /* フラッシュを有効または無効にします。フロントカメラのフラッシュを有効にすることはできません。 */
    mAlivcLivePusher.setFlash(true); 
    /* 焦点距離を調整してズームインまたはズームアウトします。焦点距離の有効値:[0,getMaxZoom()]。 */
    mAlivcLivePusher.setZoom(5);
    /* 手動フォーカスを設定します。手動フォーカスを設定するには、pointパラメーターとautoFocusパラメーターを設定する必要があります。pointパラメーターは、焦点の座標を指定します。autoFocusパラメーターは、オートフォーカスを有効にするかどうかを指定します。autoFocusパラメーターは、この呼び出しに対してのみ有効になります。それ以外の場合は、setAutoFocusメソッドに基づいてオートフォーカスが有効かどうかが異なります。 */
    mAlivcLivePusher.focusCameraAtAdjustedPoint(x, y, true);
    /* オートフォーカスを設定します。 */
    mAlivcLivePusher.setAutoFocus(true);
    /* ミラーリングモードを設定します。ミラーリングのメソッドは、PushMirrorとPreviewMirrorです。PushMirrorメソッドは、ストリーム取り込みのミラーリングモードを有効にするために使用されます。PreviewMirrorメソッドは、プレビューのミラーリングモードを有効にするために使用されます。PushMirrorはストリーム再生に対してのみ有効であり、PreviewMirrorはプレビューに対してのみ有効です。 */
    mAlivcLivePusher.setPreviewMirror(false);
    mAlivcLivePusher.setPushMirror(false);
    重要

    プレビューが開始された後にのみ、カメラ関連の操作を実行するためのメソッドを呼び出すことができます。

  9. 外部オーディオソースとビデオソースを設定します。

    Android向けプッシュSDKでは、ストリーム取り込み用に外部オーディオソースとビデオソースをインポートできます。たとえば、オーディオファイルまたはビデオファイルを取り込むことができます。

    1. 外部の音声とビデオソースを設定します。

      サンプルコード:

      /**
      * カスタム音声データをインポートします。
      * @param data 音声データのバイト配列。
      * @param size
      * @param sampleRate
      * @param channels
      * @param pts 音声のプレゼンテーションタイムスタンプ (PTS)。単位: マイクロ秒。
      * このメソッドは、タイムシーケンスを設定しません。入力オーディオフレームのタイムシーケンスを手動で設定する必要があります。
      */
      mAlivcLivePusher. inputStreamAudioData(byte[] data, int size, int sampleRate, int channels, long pts);
      /**
      * カスタム音声データをインポートします。
      * @param dataptr 音声データのネイティブメモリのポインター。
      * @param size
      * @param sampleRate
      * @param channels
      * @param pts 音声の PTS。単位: マイクロ秒。
      * このメソッドは、タイムシーケンスを設定しません。入力オーディオフレームのタイムシーケンスを手動で設定する必要があります。
      */
      mAlivcLivePusher. inputStreamAudioPtr(long dataPtr, int size, int sampleRate, int channels, long pts);
    2. 外部ビデオデータをインポートします。

      サンプルコード:

      /**
      * カスタムビデオストリームをインポートします。
      *
      * @param data ビデオのバイト配列。
      * @param width ビデオの幅。
      * @param height ビデオの高さ。
      * @param size ビデオのサイズ。
      * @param stride ビデオのストライド。
      * @param pts ビデオの PTS。単位: マイクロ秒。
      * @param rotation ビデオの回転角度。
      * このメソッドは、タイムシーケンスを設定しません。入力ビデオフレームのタイムシーケンスを手動で設定する必要があります。
      * 注: このメソッドを呼び出すときは、AlivcLivePushConfig で setExternMainStream(true,***) を設定する必要があります。
      */
      mAlivcLivePusher. inputStreamVideoData(byte[] data, int width, int height, int stride, int size, long pts, int rotation);
      /**
      * カスタムビデオストリームをインポートします。
      *
      * @param dataptr ビデオのネイティブメモリのポインター。
      * @param width ビデオの幅。
      * @param height ビデオの高さ。
      * @param stride ビデオのストライド。
      * @param size ビデオのサイズ。
      * @param pts ビデオの PTS。単位: マイクロ秒。
      * @param rotation ビデオの回転角度。
      * このメソッドは、タイムシーケンスを設定しません。入力ビデオフレームのタイムシーケンスを手動で設定する必要があります。
      * 注: このメソッドを呼び出すときは、AlivcLivePushConfig で setExternMainStream(true,***) を設定する必要があります。
      */
      mAlivcLivePusher. inputStreamVideoPtr(long dataptr, int width, int height, int stride, int size, long pts, int rotation);
    3. 外部オーディオデータをインポートします。

      サンプルコード:

      /**
      * AlivcImageFormat: 入力ビデオの形式。
      * AlivcSoundFormat: 入力オーディオフレームの形式。
      * その他のパラメーター: 出力解像度、オーディオサンプリングレート、およびチャンネル数を指定するには、
      AlivcLivePushConfig で setResolution、setAudioSamepleRate、および setAudioChannels を構成します。
      * 注: カスタムビデオストリームとオーディオストリームをインポートするには、inputStreamVideoData や inputStreamAudioData などのメソッドを呼び出します。
      */
      mAlivcLivePushConfig.setExternMainStream(true,AlivcImageFormat.IMAGE_FORMAT_YUVNV12,
      AlivcSoundFormat.SOUND_FORMAT_S16);
  10. アニメーションステッカーを管理します。

    Android 向け Push SDK を使用すると、ライブストリームにアニメーションステッカーを追加できます。アニメーションステッカーはウォーターマークとして使用できます。

    1. アニメーションステッカーを作成するには、デモで提供されている素材を使用および変更できます。アニメーションステッカーのシーケンスフレーム画像を作成します。 config.json ファイルで次のパラメーターを構成します。

      "du": 2.04,// アニメーションステッカーが再生されるたびに表示される時間を指定します。
      "n": "qizi",// アニメーションステッカーの名前を指定します。アニメーションステッカーが保存されているフォルダーの名前がステッカーの名前と同じであり、各フレームの名前がシーケンス番号で終わっていることを確認してください。例: qizi0。
      "c": 68.0,// フレーム数を指定します。これは、アニメーションステッカーに含まれる画像の数です。
      "kerneframe": 51,// 画像をキーフレームとして指定します。たとえば、デモの 51 番目のフレームをキーフレームとして指定します。指定したフレームが存在することを確認してください。
      "frameArry": [
          {"time":0,"pic":0},
          {"time":0.03,"pic":1},
          {"time":0.06,"pic":2},
          ],
      // アニメーションステッカーのパラメーターを構成します。上記の例では、"time":0,"pic":0 は、アニメーションステッカーの再生開始から 0 秒後に最初のフレーム qizi0 が表示されることを示しています。"time":0.03,"pic":1 は、アニメーションステッカーの再生開始から 0.03 秒後に 2 番目のフレーム qizi1 が表示されることを示しています。アニメーションステッカーのすべてのフレームを同じ方法で構成します。
      説明

      その他のパラメーターについては、デモで提供されている config.json ファイルの値を保持できます。

    2. アニメーションステッカーを追加します。

      サンプルコード:

      /**
      * アニメーションステッカーを追加します。
      * @param path ステッカーのパスを指定します。パスには config.json ファイルを含める必要があります。
      * @param x x 軸の開始位置を指定します。有効な値: 0 ~ 1.0f。
      * @param y y 軸の開始位置を指定します。有効な値: 0 ~ 1.0f。
      * @param w 幅を指定します。有効な値: 0 ~ 1.0f。
      * @param h 高さを指定します。有効な値: 0 ~ 1.0f。
      * @return id ステッカーの ID を指定します。ステッカーを削除する場合は、ステッカーの ID を指定する必要があります。
      */
      mAlivcLivePusher.addDynamicsAddons("Path of the sticker", 0.2f, 0.2f, 0.2f, 0.2f);
    3. アニメーションステッカーを削除します。

      サンプルコード:

      mAlivcLivePusher.removeDynamicsAddons(int id);
  11. 他のメソッドを呼び出します。

    /* カスタムモードでは、最小ビットレートとターゲットビットレートをリアルタイムで変更できます。 */
    mAlivcLivePusher.setTargetVideoBitrate(800);
    mAlivcLivePusher.setMinVideoBitrate(400);
    /* オートフォーカスがサポートされているかどうかを指定します。 */
    mAlivcLivePusher.isCameraSupportAutoFocus();
    /* フラッシュがサポートされているかどうかを指定します。 */
    mAlivcLivePusher.isCameraSupportFlash();
    /* ストリームが取り込まれているかどうかを照会します。 */
    mAlivcLivePusher.isPushing(); 
    /* 取り込み URL を照会します。 */
    mAlivcLivePusher.getPushUrl();
    /* ストリームの取り込みパフォーマンスのデバッグ情報を照会します。ストリームの取り込みパフォーマンスのパラメーターの詳細については、API リファレンスまたはコード内のコメントを参照してください。 */
    mAlivcLivePusher.getLivePushStatsInfo();
    /* SDK バージョン番号を照会します。 */
    mAlivcLivePusher.getSDKVersion();
    /* デバッグ情報をフィルタリングするためのログレベルを指定します。 */
    mAlivcLivePusher.setLogLevel(AlivcLivePushLogLevelAll);
    /* Android 用 Push SDK のステータスを照会します。 */
    AlivcLivePushStats getCurrentStatus();
    /* 前回のエラーコードを照会します。エラーコードが返されない場合は、ALIVC_COMMON_RETURN_SUCCESS が表示されます。 */
    AlivcLivePushError getLastError();

画面録画 (ベーシック版) のストリーム取り込みの設定

Push SDK for Android では、画面録画をストリーミングできます。画面録画をストリーミングするには、SDK を初期化し、プレビューを設定し、ストリーム取り込みを開始した後でのみ可能です。画面録画をストリーミングするには、次の手順を実行します。

  1. 画面録画モードを設定します。

    ビジネス要件に基づいて、次の表に示す画面録画モードのいずれかを使用できます。

    画面録画モード

    必要な設定

    カメラを無効にして画面を録画する

    1. AlivcLivePushConfig で画面録画の許可を要求するメソッドを呼び出した後に返されるデータを構成します。

    カメラを有効にして画面を録画する

    説明

    ストリーマー側でカメラプレビューを有効にします。視聴者は、カメラを使用して録画されたビデオコンテンツを表示できます。

    1. AlivcLivePushConfig で画面録画の許可を要求するメソッドを呼び出した後に返されるデータを構成します。

    2. StartCamera メソッドを呼び出すときに surfaceView を渡します。

    カメラを有効にして画面を録画する

    説明

    ストリーマー側でカメラプレビューを無効にします。視聴者は、カメラを使用して録画されたビデオコンテンツを表示できます。

    1. AlivcLivePushConfig で画面録画の許可を要求するメソッドを呼び出した後に返されるデータを構成します。

    2. surfaceView を渡すことなく StartCamera メソッドを呼び出します。

    3. startCameraMix メソッドを呼び出して、視聴者側のカメラビューの位置を調整します。

  2. 画面録画を有効にします。

    画面録画には MediaProjection が使用されます。画面録画を有効にするには、画面録画の許可を要求し、AlivcLivePushConfig の setMediaProjectionPermissionResultData メソッドを呼び出して、返されたデータを設定する必要があります。デフォルトでは、画面録画中はカメラが無効になっています。次のサンプルコードは、返されたデータを設定する方法の例を示しています。

    mAlivcLivePushConfig.setMediaProjectionPermissionResultData(resultData)
  3. カメラプレビューを設定します。

    画面録画を有効にした後、カメラプレビューメソッドを呼び出すことができます。サンプルコード:

    mAlivcLivePusher.startCamera(surfaceView); // カメラプレビューを有効にします。
    mAlivcLivePusher.stopCamera(); // カメラプレビューを無効にします。
    説明
    • 画面録画モードでは、surfaceView のアスペクト比を 1:1 に設定することをお勧めします。こうすることで、画面を回転させたときに surfaceView のアスペクト比を調整する必要がなくなります。

    • surfaceView のアスペクト比を 1:1 に設定しない場合は、画面を回転させ、カメラプレビューを無効にしてから、再度カメラプレビューを有効にするときに、アスペクト比を調整する必要があります。

    • ストリーマー側でプレビューが不要な場合は、surfaceView パラメーターを null に設定します。

  4. カメラストリームミキシングを設定します。

    ストリーマー側でカメラプレビューが不要な場合でも、視聴者がカメラプレビューを必要とする場合は、この機能を有効にできます。この機能は、主にゲームシナリオで使用されます。ストリーマーがゲームコンテンツをストリーミングしたくない場合、ストリーマーはゲームコンテンツの上にカメラビューを表示できます。サンプルコード:

    /**
    * @param x x 軸の開始位置。有効な値: 0 ~ 1.0f。
    * @param y y 軸の開始位置。有効な値: 0 ~ 1.0f。
    * @param w 画面の幅。有効な値: 0 ~ 1.0f。
    * @param h 画面の高さ。有効な値: 0 ~ 1.0f。
    * @return
    */
    mAlivcLivePusher.startCameraMix(x, y, w, h); // カメラストリームミキシングを有効にします。
    mAlivcLivePusher.stopCameraMix(); // カメラストリームミキシングを無効にします。
  5. 画面の回転を設定します。

    画面録画モードでは、画面を回転させて縦向きモードと横向きモードを切り替えることができます。サンプルコード:

    mAlivcLivePusher.setScreenOrientation(0);
    説明

    画面の向きを変更する場合は、アプリケーション層で OrientationEventListener を有効にし、方向設定を setScreenOrientation メソッドに渡す必要があります。

  6. プライバシー保護を設定します。

    この機能により、ストリーマーは画面録画中にプライバシーを保護できます。たとえば、ストリーマーがパスワードを入力する必要がある場合、ストリーマーはこの機能を有効にできます。ストリーマーがパスワードを入力した後、ストリーマーはこの機能を無効にできます。サンプルコード:

    mAlivcLivePusher.pauseScreenCapture(); // プライバシー保護を有効にします。
    mAlivcLivePusher.resumeScreenCapture(); // プライバシー保護を無効にします。
    説明

    AlivcLivePushConfig で setPausePushImage メソッドを設定すると、画面録画が一時停止されたときに指定された画像が表示されます。このメソッドを設定しない場合、画面録画が一時停止されたときに最後のフレームが表示されます。

同時配信設定の構成(インタラクティブ版)

Push SDK V4.4.4 以降のインタラクティブ版は、RTC ベースの同時配信機能を提供します。Push SDK V4.4.5 以降のインタラクティブ版は、RTC ベースの対戦機能を提供します。配信者と視聴者は、Push SDK のインタラクティブ版を使用することで、300 ミリ秒未満の超低遅延で相互にやり取りできます。インタラクティブストリーミングの詳細については、同時配信の開発者ガイド および 対戦の開発者ガイド をご参照ください。

使用上の注意

Android向けPush SDKを使用する前に、次の表に記載されている項目を確認してください。

項目

説明

難読化ルール

難読化の設定を確認してください。Android向けPush SDKのパッケージ名が難読化リストから削除されていることを確認してください。

// Android向けPush SDKのパッケージ名を難読化リストから除外してください。

メソッド呼び出し

  • 同期メソッドと非同期メソッドの両方を呼び出すことができます。ただし、同期メソッドはメインスレッドのリソースを消費するため、呼び出さないようにすることをお勧めします。

  • 必要なメソッドを呼び出さなかった場合、または無効な順序でメソッドを呼び出した場合、Android向けPush SDKは例外をスローします。予期しない終了を防ぐために、try-catchステートメントを追加する必要があります。

  • 次の図は、適切な順序でメソッドを呼び出す方法を示しています。