tencent cloud

フィードバック

ネットワークオーディオストリーム転送ルーティング

最終更新日:2024-01-18 15:47:47
    GME開発者がTencent Cloud GME製品APIのデバッグと導入を容易にするために、このドキュメントではGMEカスタマイズオーディオ転送ルーティング機能に適している使用参考ドキュメントを紹介します。

    シナリオ

    場面説明:2人の友達がチームを組んだ後、3人の知らない人をマッチングして大きなチームを組み、チーム全員の声を聞いて、チームの友達と話すような機能が必要です。
    カスタムオーディオルーティング機能でそれを実装することができます。ここでは5人全員が同じ音声ルームに入り、音声ルーティングのインターフェース設定を行い、2人チームの音声のみまたは全ルームの音声が聞こえるように設定したり、2人チームの者のみに話が聞こえるように設定したり、全ルームの者に話が聞こえるように設定したりすることができます。
    オーディオルール距離:SetServerAudioRouteSendOperateType(AUDIO_ROUTE_SEND_WHITE_LIST,"2人チームのlist",ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE,"2人チームのlist");
    これにより、音声はlistに含まれる人にのみ送信されるととも、3人チームの音声のみが受信されます。
    
    
    

    前提条件

    リアルタイム音声サービスが有効になっていることサービス有効化ガイドをご参照ください。
    GME SDK導入済み:コアインターフェースとリアルタイム音声インターフェースの導入を含みます。詳細については、Native SDKクイックスタートUnity SDKクイックスタートUnreal SDKクイックスタートをご参照ください。
    GMEリアルタイム音声機能を使用して音声ルームへの参加に成功し、マイク(EnableMic)、スピーカー(EnableSpeaker)をオンにしました。

    音声転送ルーティング機能の導入

    オーディオ転送ルールの設定

    このインターフェースを呼び出して音声転送ルールを設定します。このインターフェースは、入室のコールバックに成功したときに呼び出され、呼び出し後にこの入室が有効になり、退室後に無効になります。
    ご注意:
    発言禁止機能AddBlackListはネイティブに有効で、カスタムオーディオルーティングよりも優先されます。例えば、AはSetServerAudioRouteSendOperateTypeでBの発話のみを聞くように設定したが、AddBlackListを呼び出してBの発言を禁止した場合、AはBの声を聞くことができなくなります。

    インターフェースのプロトタイプ

    Unity
    C++
    Android
    iOS
    public abstract class ITMGRoom{
    public abstract int SetServerAudioRouteSendOperateType(ITMG_SERVER_AUDIO_ROUTE_SEND_TYPE Sendtype, string[] OpenIDforSend, ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE Recvtype, string[] OpenIDforRecv);
    }
    virtual int SetServerAudioRoute(ITMG_SERVER_AUDIO_ROUTE_SEND_TYPE SendType, const char OpenIDforSend[][21], int OpenIDforSendSize, ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE RecvType,const char OpenIDforRecv[][21], int OpenIDforRecvSize) = 0;
    public abstract int SetServerAudioRoute(ITMGContext.ITMG_SERVER_AUDIO_ROUTE_SEND_TYPE sendType, ArrayList<String> SendList, ITMGContext.ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE recvType, ArrayList<String> RecvList);
    -(int)SetServerAudioRouteSendOperateType:(ITMG_SERVER_AUDIO_ROUTE_SEND_TYPE) Sendtype SendList:(NSArray *)OpenIDForSend RecvOperateType:(ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE) Recvtype RecvList:(NSArray *)OpenIDForRecv;

    タイプの説明

    ITMG_SERVER_AUDIO_ROUTE_SEND_TYPE
    音声送信ルールを設定し、異なるルールを入力すると、異なる送信ルールが設定されます。
    受信タイプ
    効果
    AUDIO_ROUTE_NOT_SEND_TO_ANYONE
    ローカルからのアップリンクオーディオはバックグラウンドに送信されますが、バックグラウンドはそれをだれにも転送しません。これはご自身をミュートすることと同じです。このとき、パラメータOpenIDForSendは無効で、nullを入力すればよいです。
    AUDIO_ROUTE_SEND_TO_ALL
    ローカルからのアップリンクオーディオは全員に転送されます。このとき、パラメータOpenIDForSendは無効で、nullを入力すればよいです。
    AUDIO_ROUTE_SEND_BLACK_LIST
    ローカルからのアップリンクオーディオは、パラメータOpenIDForSendによって提供されるブラックリスト内の人には転送されません。
    AUDIO_ROUTE_SEND_WHITE_LIST
    ローカルからのアップリンクオーディオは、パラメータOpenIDForSendによって提供されるホワイトリスト内の人にのみ転送されます。
    説明:
    タイプにAUDIO_ROUTE_NOT_SEND_TO_ANYONEおよびAUDIO_ROUTE_SEND_TO_ALLが渡された場合、パラメータOpenIDForSendは有効でなく、nullを入力すればよいです。
    タイプにAUDIO_ROUTE_SEND_BLACK_LISTが渡された場合、パラメータOpenIDForSendはブラックリストで、最大10個までサポートされます。
    タイプにAUDIO_ROUTE_SEND_WHITE_LISTが渡された場合、パラメータOpenIDForSendはホワイトリストで、最大10個までサポートされます。
    ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE
    音声受信ルールを設定します。異なるルールが入力されると、異なる受信ルールが設定されます。
    受信タイプ
    効果
    AUDIO_ROUTE_NOT_RECV_FROM_ANYONE
    ローカルでは、すべてのオーディオを受け入れません。これはルーム内のスピーカー効果をオフにすることと同じです。このとき、パラメータOpenIDForSendは無効で、nullを入力すればよいです。
    AUDIO_ROUTE_RECV_FROM_ALL
    ローカルでは、全員のオーディオを受け入れます。このとき、パラメータOpenIDForSendは無効で、nullを入力すればよいです。
    AUDIO_ROUTE_RECV_BLACK_LIST
    ローカルでは、パラメータOpenIDForSendによって提供されるブラックリスト内の人のオーディオを受け入れません。
    AUDIO_ROUTE_RECV_WHITE_LIST
    ローカルでは、パラメータOpenIDForSendによって提供されるホワイトリスト内の人のオーディオのみ受け入れます。
    説明:
    タイプにAUDIO_ROUTE_NOT_RECV_FROM_ANYONEおよびAUDIO_ROUTE_RECV_FROM_ALLが渡された場合、パラメータOpenIDForSendは有効になりません。
    タイプにAUDIO_ROUTE_RECV_BLACK_LISTが渡された場合、パラメータOpenIDForSendはブラックリストで、最大10個までサポートされます。
    タイプにAUDIO_ROUTE_RECV_WHITE_LISTが渡された場合、パラメータOpenIDForSendはホワイトリストで、最大10個までサポートされます。

    戻り値

    インターフェースの戻り値がQAV_OKの場合、成功したことを示します。
    コールバックが1004を返した場合、パラメータが間違っていることを示します。パラメータが正しいかどうかを再確認することをお勧めします。
    コールバックが1001を返した場合は、動作が繰り返されることを示します。
    コールバックが1201を返した場合は、ルームが存在しないことを示します。ルーム番号が正しいかどうかを確認することをお勧めします。
    コールバックが10001と1005を返した場合は、インターフェースをもう一度呼び出すことをお勧めします。
    返された結果の詳細について、エラーコードをご参照ください。

    サンプルコード

    実行ステートメント
    @synthesize _sendListArray;
    @synthesize _recvListArray;
    
    int ret = [[[ITMGContext GetInstance] GetRoom] SetServerAudioRouteSendOperateType:SendType SendList:_sendListArray RecvOperateType:RecvType RecvList:_recvListArray];
    if (ret != QAV_OK) {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"audiorouteリストの更新に失敗しました" message:[NSString stringWithFormat:@"エラーコード:%d",ret] delegate:NULL cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    }
    コールバック
    -(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
    NSString *log = [NSString stringWithFormat:@"OnEvent:%d,data:%@", (int)eventType, data];
    switch (eventType) {
    case ITMG_MAIN_EVENT_TYPE_SERVER_AUDIO_ROUTE_EVENT:{
    {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"audioroute更新" message:[NSString stringWithFormat:@"結果:%@,sub_type: %@ errorinof: %@", data[@"result"],data[@"sub_type"],data[@"error_info"]] delegate:NULL cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    }
    }
    default:
    break;
    }
    }

    オーディオ設定転送ルールの取得

    このインターフェースを呼び出すとオーディオ転送ルールを取得します。呼び出し後、インターフェースはルールを返します。渡された配列パラメータは、対応するルールのopenIdを返します。

    インターフェースのプロトタイプ

    Unity
    iOS
    public abstract ITMG_SERVER_AUDIO_ROUTE_SEND_TYPE GetCurrentSendAudioRoute(List<string> OpenIDforSend);
    public abstract ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE GetCurrentRecvAudioRoute(List<string> OpenIDforRecve);
    -(ITMG_SERVER_AUDIO_ROUTE_SEND_TYPE)GetCurrentSendAudioRoute:(NSMutableArray *) OpenIDForSend;
    -(ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE)GetCurrentRecvAudioRoute:(NSMutableArray *)OpenIDForRecv;

    戻りルール

    ITMG_SERVER_AUDIO_ROUTE_SEND_TYPE
    受信タイプ
    効果
    AUDIO_ROUTE_NOT_SEND_TO_ANYONE
    ローカルからのアップリンクオーディオはバックグラウンドに送信されますが、バックグラウンドはそれをだれにも転送しません。これはご自身をミュートすることと同じです
    AUDIO_ROUTE_SEND_TO_ALL
    ローカルからのアップリンクオーディオは全員に転送されます
    AUDIO_ROUTE_SEND_BLACK_LIST
    ローカルからのアップリンクオーディオはブラックリスト内の人には転送されません
    AUDIO_ROUTE_SEND_WHITE_LIST
    ローカルからのアップリンクオーディオはホワイトリスト内の人にのみ転送されます
    AUDIO_ROUTE_RECV_INQUIRE_ERROR
    取得にエラーが発生しました。ルームに参加したか、SDKが初期化されているかを確認します
    ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE
    受信タイプ
    効果
    AUDIO_ROUTE_NOT_RECV_FROM_ANYONE
    ローカルでは、すべてのオーディオを受け入れません。これはルーム内のスピーカー効果をオフにすることと同じです
    AUDIO_ROUTE_RECV_FROM_ALL
    ローカルでは、全員のオーディオを受け入れます
    AUDIO_ROUTE_RECV_BLACK_LIST
    ローカルでは、ブラックリスト内の人のオーディオを受け入れません
    AUDIO_ROUTE_RECV_WHITE_LIST
    ローカルでは、ホワイトリスト内の人のオーディオのみ受け入れます
    AUDIO_ROUTE_RECV_INQUIRE_ERROR
    取得にエラーが発生しました。ルームに参加したか、SDKが初期化されているかを確認します
    ご注意:
    SetServerAudioRouteSendOperateTypeインターフェースでAUDIO_ROUTE_RECV_INQUIRE_ERRORを使用しないでください。
    
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)