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

ApsaraVideo Live:Flutter 向け Push SDK の使用

最終更新日:Dec 19, 2025

このトピックでは、Flutter 向け Push SDK の使用方法について、そのコアインターフェイスと基本的なワークフローを例を挙げて説明します。

特徴

  • リアルタイムメッセージングプロトコル (RTMP) でのアップストリーミングをサポートします。

  • ユーザーデータグラムプロトコル (UDP) ベースの Alibaba Real-Time Communication (ARTC) でのアップストリーミングをサポートします。

  • ビデオエンコーディングに H.264、音声エンコーディングに AAC を使用します。

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

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

  • リアルタイムの美顔効果とカスタムの美顔効果をサポートします。

  • ウォーターマークとしてアニメーションスタンプの追加と削除が可能です。

  • YUV やパルス符号変調 (PCM) など、さまざまなフォーマットの外部音声および動画入力をサポートします。

  • 音声のみ、動画のみのストリームのアップストリーミングと、バックグラウンドでのアップストリーミングをサポートします。

  • BGM をサポートします。

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

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

  • 自動ゲイン制御 (AGC)、自動ノイズリダクション (ANR)、アコースティックエコーキャンセレーション (AEC) アルゴリズムをサポートします。

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

制限事項

Flutter 向け Push SDK を使用する前に、次の制限事項にご注意ください。

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

  • 横向きモードでアップストリーミングを行うには、画面の自動回転を無効にする必要があります。

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

関連 API

Flutter 向け Push SDK API リファレンス

操作手順

  1. SDK の登録

  2. アップストリーミングパラメーターの設定

  3. アップストリーミングの開始

機能の使用方法

SDK の登録

登録の前に、SDK ライセンスを設定する必要があります。Flutter 向け Push SDK は統合ライセンスをサポートしています。ライセンスの申請と設定については、「Push SDK ライセンスの統合」をご参照ください。

その後、アップストリーミングの前に SDK を登録します。

  1. SDK を登録します。

    AlivcLiveBase.registerSDK();
  2. 登録用のリスナーを設定します。

    AlivcLiveBase.setListener(AlivcLiveBaseListener(
      onLicenceCheck: (AlivcLiveLicenseCheckResultCode result, String reason) {
        if (result == AlivcLiveLicenseCheckResultCode.success) {
          /// SDK が登録されました。
        }
      },
    ));

アップストリーミングパラメーターの設定

すべての基本パラメーターにはデフォルト値があります。デフォルト値を使用することを推奨します。

/// AlivcLivePusher インスタンスを作成します。
AlivcLivePusher livePusher = AlivcLivePusher.init();

/// Config オブジェクトを作成して、AlivcLivePushConfig を AlivcLivePusher に関連付けます。
livePusher.createConfig();

/// AlivcLivePushConfig インスタンスを作成します。
AlivcLivePushConfig pusherConfig = AlivcLivePushConfig.init();

/// アップストリーミングパラメーターを設定します。
/// 解像度を 540P に設定します。
pusherConfig.setResolution(AlivcLivePushResolution.resolution_540P);
/// フレームレートを指定します。20 フレーム/秒 (FPS) に設定することを推奨します。
pusherConfig.setFps(AlivcLivePushFPS.fps_20);
/// アダプティブビットレートストリーミングを有効にするかどうかを指定します。デフォルト値は true です。
pusherConfig.setEnableAutoBitrate(true);
/// GOP (Group of Pictures) サイズを指定します。値が大きいほど、レイテンシーが高くなります。1 から 2 の数値を設定することを推奨します。
pusherConfig.setVideoEncodeGop(AlivcLivePushVideoEncodeGOP.gop_2);
/// 再接続の期間を指定します。値は 1000 未満にすることはできません。単位:ミリ秒。デフォルト値を使用することを推奨します。
pusherConfig.setConnectRetryInterval(2000);
/// プレビューのミラーリングモードを無効にします。
pusherConfig.setPreviewMirror(false);
/// ストリームの向きを縦向きに設定します。
pusherConfig.setOrientation(AlivcLivePushOrientation.portrait);

アップストリーミングの開始

  1. livePusher エンジンを作成します。

    livePusher.initLivePusher();
  2. アップストリーミングイベントのリスナーを登録します。

    /// アップストリーミングステータスのリスナーを設定します。
    livePusher.setInfoDelegate();
    /// アップストリーミングエラーのリスナーを設定します。
    livePusher.setErrorDelegate();
    /// アップストリーミング中のネットワークステータスのリスナーを設定します。
    livePusher.setNetworkDelegate();
  3. アップストリーミングに関連するコールバックを設定します。

    /// アップストリーミングエラーのリスナー
    /// SDK エラーのコールバックを設定します
    livePusher.setOnSDKError((errorCode, errorDescription) {});
    /// システムエラーのコールバックを設定します
    livePusher.setOnSystemError((errorCode, errorDescription) {});
    
    /// アップストリーミングステータスのリスナー
    /// プレビュー開始のコールバックを設定します
    livePusher.setOnPreviewStarted(() {});
    /// プレビュー停止のコールバックを設定します
    livePusher.setOnPreviewStoped(() {});
    /// 最初のフレームレンダリングのコールバックを設定します
    livePusher.setOnFirstFramePreviewed(() {});
    /// アップストリーミング開始のコールバックを設定します
    livePusher.setOnPushStarted(() {});
    /// カメラストリームのアップストリーミング一時停止のコールバックを設定します
    livePusher.setOnPushPaused(() {});
    /// カメラストリームのアップストリーミング再開のコールバックを設定します
    livePusher.setOnPushResumed(() {});
    /// アップストリーミング再開のコールバックを設定します
    livePusher.setOnPushRestart(() {});
    /// アップストリーミング終了のコールバックを設定します
    livePusher.setOnPushStoped(() {});
    
    /// アップストリーミング中のネットワークステータスのリスナー
    /// 接続失敗のコールバックを設定します
    livePusher.setOnConnectFail((errorCode, errorDescription) {});
    /// ネットワーク回復のコールバックを設定します
    livePusher.setOnConnectRecovery(() {});
    /// 切断のコールバックを設定します
    livePusher.setOnConnectionLost(() {});
    /// ネットワーク接続不良のコールバックを設定します
    livePusher.setOnNetworkPoor(() {});
    /// 再接続失敗のコールバックを設定します
    livePusher.setOnReconnectError((errorCode, errorDescription) {});
    /// 再接続開始のコールバックを設定します
    livePusher.setOnReconnectStart(() {});
    /// 再接続成功のコールバックを設定します
    livePusher.setOnReconnectSuccess(() {});
  4. アップストリーミング用のプレビュービューを作成します。

    var x = 0.0; // カスタム値
    var y = 0.0; // カスタム値
    var width = MediaQuery.of(context).size.width; // カスタム値
    var height = MediaQuery.of(context).size.height; // カスタム値
    AlivcPusherPreview pusherPreviewView = AlivcPusherPreview(
          onCreated: _onPusherPreviewCreated,
          x: x,
          y: y,
          width: width,
          height: height);
      return Container(
            color: Colors.black,
            width: width,
            height: height,
            child: pusherPreviewView);
  5. プレビューを開始します。

    /// プレビュー作成のコールバック
    _onPusherPreviewCreated(id) {
         /// プレビューを開始します
        livePusher.startPreview();
    }
    説明

    Flutter プロジェクトの画面の向きが縦向きで、setOrientation を呼び出して画面の向きを横向きに設定したと仮定します。プレビューを作成し、startPreview を呼び出してプレビューを開始した後、動画がプレビューウィンドウに収まらない場合があります。startPreview を呼び出す前に短い遅延を追加することを推奨します。

    例:Future.delayed(Duration(milliseconds: 100));

  6. アップストリーミングを開始します。プレビューが成功した後にのみ、アップストリーミングを開始できます。

    String pushURL = "テスト用のアップストリーミング URL (rtmp://......)"; 
    livePusher.startPushWithURL(pushURL);
    説明
    • RTMP と RTS (artc://) のアップストリーミング URL がサポートされています。アップストリーミング URL を生成するには、 「ストリーミング URL の生成」をご参照ください。

    • ApsaraVideo Live は、同じ URL への複数ストリームの同時アップストリーミングをサポートしていません。2 番目のアップストリーミングリクエストは拒否されます。

アップストリーミング関連のメソッド

/// カメラからのアップストリーミングを一時停止します。setPauseImg を呼び出して、一時停止中に表示されるイメージを設定できます。その後、pause メソッドを呼び出して、カメラフィードから指定したイメージに切り替えます。音声ストリームは引き続きアップストリーミングされます。
livePusher.pause();
/// アップストリーミングを再開して、イメージからカメラフィードに切り替えます。音声ストリームは引き続きアップストリーミングされます。
livePusher.resume();
/// アップストリーミング中のストリームを停止します。
livePusher.stopPush();
/// プレビューを停止します。ただし、この操作はアップストリーミング中のストリームには影響しません。プレビューが停止すると、プレビューウィンドウは最後のフレームでフリーズします。
livePusher.stopPreview();
/* ストリームがアップストリーミング中、またはエラーコールバックが受信されたときに、アップストリーミングを再開します。プレビューとアップストリーミングを含む、AlivcLivePusher のすべてのリソースが再初期化されます。エラーが発生した場合、このメソッドまたは reconnectPushAsync メソッドを呼び出してアップストリーミングを再開できます。destroy メソッドを呼び出してアップストリーミングインスタンスを破棄することもできます。*/
livePusher.restartPush();
/* ストリーミング中またはネットワークエラー状態 (setNetworkDelegate) のときに、RTMP ストリームを再接続して再プッシュします。エラー状態では、destroy を呼び出してインスタンスを破棄することもできます。*/
livePusher.reconnectPushAsync();
/// アップストリーミングとプレビューを停止します。このメソッドを呼び出した後、AlivcLivePusher に関連するすべてのリソースが破棄されます。
livePusher.destory();

カメラ関連のメソッド

/// フロントカメラとリアカメラを切り替えます。
livePusher.switchCamera();
/// フラッシュを有効または無効にします。フロントカメラではフラッシュを有効にできません。
livePusher.setFlash(false);

/// 焦点距離を調整してズームインまたはズームアウトします。入力パラメーターに正の数を設定すると、システムは焦点距離を長くします。負の数を設定すると、システムは焦点距離を短くします。
double max = await livePusher.getMaxZoom();
livePusher.setZoom(min(1.0, max));

/// マニュアルフォーカスを設定します。
/// autoFocus パラメーターは、オートフォーカスを有効にするかどうかを指定します。このパラメーターはこの呼び出しに対してのみ有効です。オートフォーカスが有効になるかどうかは、setAutoFocus メソッドに依存します。
double pointX = 50.0; // カスタム値
double pointY = 50.0; // カスタム値
bool autoFocus = true;
livePusher.focusCameraAtAdjustedPoint(pointX, pointY, autoFocus);

/// オートフォーカスを無効にします。
livePusher.setAutoFocus(false);
/// プレビューのミラーリングモードを無効にします。
livePusher.setPreviewMirror(false);
/// アップストリーミングのミラーリングモードを無効にします。
livePusher.setPushMirror(false);

イメージのアップストリーミング

Flutter 向け Push SDK は、アプリケーションがバックグラウンドに切り替わったときやビットレートが低いときにイメージをアップストリーミングすることをサポートします。

アプリケーションがバックグラウンドに切り替わると、デフォルトで動画ストリームのアップストリーミングは一時停止され、音声ストリームのみがアップストリーミングされます。ストリーマーは、視聴者に対して、ストリーマーが離席しており、まもなく戻ることを知らせるイメージを表示できます。

/// 一時停止中にアップストリーミングされるイメージを指定します。
String pauseImagePath = "xxxx"; // xxxx はイメージのパスを指定します。
pusherConfig.setPauseImg(pauseImagePath);

ネットワーク状態が悪い場合にアップストリーミングされるイメージを指定することもできます。ビットレートが低い場合、カクつきを防ぐためにイメージが表示されます。サンプルコード:

/// ネットワーク状態が悪い場合にアップストリーミングされるイメージを指定します。
String networkPoorImagePath = "xxxx"; // xxxx はイメージのパスを指定します。
pusherConfig.setNetworkPoorImg(networkPoorImagePath);

プレビュー表示モードの設定

Flutter 向け Push SDK は、次のプレビューモードをサポートしています。プレビューモードはアップストリーミングには影響しません。

  • AlivcPusherPreviewDisplayMode.preview_scale_fill:動画がプレビューウィンドウを埋めます。動画とプレビューウィンドウの縦横比が一致しない場合、動画が変形します。

  • AlivcPusherPreviewDisplayMode.preview_aspect_fit:動画の縦横比が維持されます。縦横比が異なる場合、プレビューウィンドウに黒枠が表示されます。

  • AlivcPusherPreviewDisplayMode.preview_aspect_fill:縦横比が異なる場合、動画はプレビューウィンドウに合わせてトリミングされます。

サンプルコード:

/// プレビュー表示モードを設定します。
pusherConfig.setPreviewDisplayMode(AlivcPusherPreviewDisplayMode.preview_aspect_fit);

動画品質の設定

Flutter 向け Push SDK は、解像度優先、流暢性優先、カスタムの動画品質モードをサポートしています。

重要

動画品質を設定するには、ビットレート制御を有効にする必要があります:pusherConfig.setEnableAutoBitrate(true);

解像度優先 (デフォルト)

このモードでは、SDK はビットレートパラメーターを自動的に設定して、動画品質を確保します。

pusherConfig.setQualityMode(AlivcLivePushQualityMode.resolution_first);

流暢性優先

このモードでは、SDK はビットレートパラメーターを自動的に設定して、アップストリーミングされる動画ストリームの滑らかさを確保します。

pusherConfig.setQualityMode(AlivcLivePushQualityMode.fluency_first);

カスタムモード

カスタムモードでは、SDK は指定した値 (初期、最小、ターゲットビットレートなど) に基づいてビットレートを設定します。

  • TargetVideoBitrate:ネットワーク状態が良い場合、ビットレートは徐々にターゲットビットレートまで増加し、動画品質が向上します。

  • MinVideoBitrate:ネットワーク状態が悪い場合、ビットレートは徐々に最小ビットレートまで減少し、カクつきを防ぎます。

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

pusherConfig.setQualityMode(AlivcLivePushQualityMode.custom);
pusherConfig.setInitialVideoBitrate(1000);
pusherConfig.setMinVideoBitrate(600);
pusherConfig.setTargetVideoBitrate(1400);

ビットレートを設定する際は、Alibaba Cloud が提供する推奨設定をご参照ください:

  • 解像度優先モードの推奨設定

    解像度

    初期ビットレート

    最小ビットレート

    ターゲットビットレート

    360P

    600

    300

    1000

    480P

    800

    300

    1200

    540P

    1000

    600

    1400

    720P

    1500

    600

    2000

    1080P

    1800

    1200

    2500

  • 解像度優先モードの推奨設定

    解像度

    初期ビットレート

    最小ビットレート

    ターゲットビットレート

    360P

    400

    200

    600

    480P

    600

    300

    800

    540P

    800

    300

    1000

    720P

    1000

    300

    1200

    1080P

    1500

    1200

    2200

解像度適応の設定

SDK は、アップストリーミングされるストリームの解像度を動的に調整することをサポートしています。この機能が有効な場合、ネットワーク状態が悪いときに解像度が自動的に低下し、滑らかさと品質が確保されます。サンプルコード:

/// 解像度適応を有効にします。
pusherConfig.setEnableAutoResolution(true);
重要
  • 解像度適応は、動画品質モードが解像度優先または流暢性優先に設定されている場合にのみ有効です。

  • 一部のプレーヤーは動的解像度をサポートしていない場合があります。ApsaraVideo Player の使用を推奨します。

BGM の設定

/// BGM の再生を開始します。
String musicPath = "xxxx"; // xxxx は音楽リソースが保存されているパスを指定します。
livePusher.startBGMWithMusicPathAsync(musicPath);
/// BGM の再生を停止します。BGM を変更したい場合は、BGM の再生を開始するメソッドを呼び出します。現在の BGM の再生を停止する必要はありません。
livePusher.stopBGMAsync();
/// BGM の再生を一時停止します。このメソッドは、BGM の再生が開始された後にのみ呼び出すことができます。
livePusher.pauseBGM();
/// BGM の再生を再開します。このメソッドは、BGM の再生が一時停止された後にのみ呼び出すことができます。
livePusher.resumeBGM();
/// ループを有効にします。
livePusher.setBGMLoop(true);
/// ノイズ除去を設定します。有効にすると、システムは収集された音声からボーカル以外の部分をフィルタリングします。この機能により、人の声の音量がわずかに低下する場合があります。ユーザーがこの機能を有効にするかどうかを決定できるようにすることを推奨します。デフォルトでは、この機能は無効になっています。
livePusher.setAudioDenoise(true);
/// イヤモニターを設定します。イヤモニターはカラオケのシナリオに適しています。有効にすると、ヘッドフォンユーザーは自分の声を聞くことができます。無効にすると、ヘッドフォンで自分の声を聞くことはできません。ヘッドフォンが検出されない場合、このパラメーターは無効です。
livePusher.setBGMEarsBack(true);
/// ミックスされた音声の BGM の音量を指定します。
livePusher.setBGMVolume(50); // 有効な値:0 から 100。デフォルト値:50
/// ミックスされた音声の人の声の音量を指定します。
livePusher.setCaptureVolume(50); // 有効な値:0 から 100。デフォルト値:50
/// ミュートを設定します。この機能を有効にすると、BGM と人の声がミュートされます。BGM または人の声を個別にミュートするには、音量を設定するメソッドを呼び出します。
livePusher.setMute(true);

BGM に関連するコールバックを設定します:

/// BGM の再生終了のコールバックを設定します。
livePusher.setOnBGMCompleted(() {});
/// BGM のダウンロードタイムアウトのコールバックを設定します。
livePusher.setOnBGMDownloadTimeout(() {});
/// BGM の再生失敗のコールバックを設定します。
livePusher.setOnBGMOpenFailed(() {});
/// BGM の再生一時停止のコールバックを設定します。
livePusher.setOnBGMPaused(() {});
/// 再生進捗のコールバックを設定します。
livePusher.setOnBGMProgress((progress, duration) {});
/// BGM の再生再開のコールバックを設定します。
livePusher.setOnBGMResumed(() {});
/// BGM の再生開始のコールバックを設定します。
livePusher.setOnBGMStarted(() {});
/// BGM の再生停止のコールバックを設定します。
livePusher.setOnBGMStoped(() {});

スナップショットのキャプチャ

/// スナップショットをキャプチャします。
String dir = "xxxx"; // xxxx はスナップショットが保存されるパスを指定します。
if (Platform.isIOS) {
    /// dir パラメーター:iOS では、パスは相対パスです。カスタムディレクトリがシステムサンドボックスに自動的に生成されます。このパラメーターを "" に設定すると、スナップショットはシステムサンドボックスのルートディレクトリに保存されます。
    /// dirTypeForIOS パラメーター:オプション。このパラメーターを指定しない場合、スナップショットはシステムサンドボックスの [document] ディレクトリに保存されます。
    livePusher.snapshot(1, 0, dir, dirTypeForIOS: AlivcLiveSnapshotDirType.document);
} else {
    livePusher.snapshot(1, 0, dir);
}
/// スナップショットキャプチャのリスナーを設定します。このメソッドは、snapshot を呼び出した後にのみ呼び出すことができます。
livePusher.setSnapshotDelegate();

/// スナップショットキャプチャに関連するコールバックを設定します。
livePusher.setOnSnapshot((saveResult, savePath, {dirTypeForIOS}) {
  	// スナップショットが保存されたときにトリガーされるコールバック。
    if (saveResult == true) {
      if (Platform.isIOS) {
        // システムサンドボックス内のスナップショットの完全なパスを構築します。フォーマット:dirTypeForIOS + savePath。
      } else {
        // savePath の値に基づいてスナップショットのパスを取得します。
      }
    }
  });

ウォーターマークの設定

Push SDK for Android は、PNG フォーマットのウォーターマークを 1 つ以上追加することをサポートしています。サンプルコード:

String watermarkBundlePath = "xxxx"; //xxxx はウォーターマークイメージが保存されているパスを指定します。
double coordX = 0.1;
double coordY = 0.1;
double width = 0.3;
/// ウォーターマークを追加します。
livePusher.addWatermark(watermarkBundlePath, coordX, coordY, width);

ここで:

  • coordX と coordY は、ウォーターマークの位置を決定する相対値です。coordX=0.1 は、ウォーターマークの左端がストリーム幅の 10% の位置にあることを指定します。解像度が 540 x 960 の場合、x の位置は 540 x 0.1 = 54 ピクセルになります。

  • width は、ストリーム幅に対するウォーターマークの幅を指定します。高さは比例してスケーリングされます。

説明
  • テキストウォーターマークを追加するには、テキストを PNG イメージに変換し、このメソッドを呼び出してイメージをウォーターマークとして追加します。

  • ウォーターマークの鮮明さとエッジの滑らかさを確保するために、設定と同じサイズのソースイメージを使用することを推奨します。たとえば、出力動画の解像度が 544 × 940 で、ウォーターマークの幅が 0.1f に設定されている場合、推奨されるソースイメージの幅は 544 × 0.1f = 54.4 ピクセルです。

外部の音声/動画ソースのプッシュ

Push SDK for Android は、動画ファイルなどの外部の音声/動画ソースのアップストリーミングをサポートしています。

アップストリーミングの前に、カスタムの音声および動画入力を有効にします。

/// カスタムの音声および動画入力を有効にします。
pusherConfig.setExternMainStream(true);
/// 動画データのカラーフォーマットを指定します。この例では、YUVNV21 を使用します。ビジネス要件に応じて他のフォーマットも使用できます。
pusherConfig.setExternVideoFormat(AlivcLivePushVideoFormat.YUVNV21);
/// 音声データのビット深度フォーマットを指定します。この例では、S16 を使用します。ビジネス要件に応じて他のフォーマットも使用できます。
pusherConfig.setExternMainStream(AlivcLivePushAudioFormat.S16);

カスタムの音声および動画ストリーム入力を有効にした後、外部の音声および動画ストリームをプッシュできます。

外部動画データのプッシュ

/// sendVideoData メソッドを使用して送信できるのは、YUV または RGB フォーマットの連続バッファーデータのみです。動画バッファー、長さ、幅、高さ、タイムスタンプ、回転角度を指定できます。
Uint8List bufferData = xxxx; // xxxx は Uint8List フォーマットの連続動画バッファーデータを示します。
int width = 720; // 動画の幅。
int height = 1280; // 動画の高さ。
int dataSize = xxxx; // xxxx はデータのサイズを示します。
int pts = xxxx; // xxxx はマイクロ秒単位のタイムスタンプを示します。
int rotation = 0; // 回転角度。
livePusher.sendVideoData(bufferData, width, height, size, pts, rotation);

外部音声データのプッシュ

/// sendPCMData メソッドを使用して送信できるのは、PCM フォーマットの連続バッファーデータのみです。音声バッファー、長さ、タイムスタンプを指定できます。
Uint8List bufferData = xxxx; // xxxx は Uint8List フォーマットの連続音声バッファーデータを示します。
int dataSize = xxxx; // xxxx はデータのサイズを示します。
int sampleRate = xxxx; // xxxx は音声サンプルレートを示します。
int channel = 0; // サウンドチャンネルの数。
int pts = xxxx; // xxxx はマイクロ秒単位のタイムスタンプを示します。
livePusher.sendPCMData(bufferData, size, sampleRate, channel, pts);

ネイティブ Push SDK のバージョン番号の取得

/// ネイティブ Push SDK のバージョン番号を取得します。
String sdkVersion = await AlivcLiveBase.getSdkVersion();

ログの設定

/// コンソールでのログ出力を有効にします。
AlivcLiveBase.setConsoleEnable(true);
/// ログレベルを Debug に設定します。
AlivcLiveBase.setLogLevel(AlivcLivePushLogLevel.debug);

/// 各シャードの最大サイズを指定します。合計ログサイズは、最大シャードサイズの 5 倍です。
const int saveLogMaxPartFileSizeInKB = 100 * 1024 * 1024;
/// ログパス。
String saveLogDir = "TODO";
/// ログパスとログシャードサイズを指定します。
AlivcLiveBase.setLogPath(saveLogDir, saveLogMaxPartFileSizeInKB);

Config オブジェクトのリセット (iOS)

iOS で AlivcLivePushConfig を使用しない場合、このメソッドを呼び出して Config オブジェクトの設定をクリアできます。次回 AlivcLivePusher を作成する際には、デフォルト設定が復元されます。

AlivcLivePusher の destroy メソッドを呼び出した後に、このメソッドを呼び出すことを推奨します。

/// iOS で Config オブジェクトをリセットします。
livePusher.destroyConfigForIOS();

美顔効果の追加

Flutter 向け Push SDK は、プラグインを使用して美顔効果を提供します。美顔機能を使用するには、SDK パッケージの example\plugins ディレクトリにある flutter_livepush_beauty_plugin プラグインを見つけてください。

説明

美顔プラグインは個別にはリリースされていません。

/// 1. 美顔オブジェクトを初期化します。
AlivcLiveBeautyManager beautyManager = AlivcLiveBeautyManager.init();
beautyManager.setupBeauty();
/// 2. 美顔パネルを表示します。
beautyManager.showPanel();
/// 3. 美顔パネルを閉じます (Android の場合)。
beautyManager.hidePanel();
/// 4. 美顔オブジェクトを破棄します。
beautyManager.destroyBeauty();

よくある質問

アップストリーミングの失敗をトラブルシューティングするにはどうすればよいですか。

 トラブルシューティングツール を使用して、アップストリーミング URL が有効であるかどうかを確認できます。

アップストリーミングされたストリームに関する情報を取得するにはどうすればよいですか。

ストリーム管理ページに移動し、[アクティブなストリーム] でアップストリームされた音声および動画ストリームを表示します。

ストリームを再生するにはどうすればよいですか。

アップストリーミングを開始した後、プレーヤー (ApsaraVideo Player、FFplay、VLC など) を使用してストリームフェッチングをテストできます。 再生 URL を取得するには、 「ストリーミング URL の生成」をご参照ください。