tencent cloud

$0 14-Day TrialExperience EdgeOne for acceleration and security protection!

フィードバック

Game Multimedia Engine
ドキュメントGame Multimedia Engine拡張機能開発ガイドネットワークオーディオストリーム転送ルーティング
ドキュメントGame Multimedia Engine拡張機能開発ガイドネットワークオーディオストリーム転送ルーティング

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

最終更新日: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日対応)
Hong Kong, China
+852 800 906 020 (Toll Free)
United States
+1 844 606 0804 (Toll Free)
United Kingdom
+44 808 196 4551 (Toll Free)
Canada
+1 888 605 7930 (Toll Free)
Australia
+61 1300 986 386 (Toll Free)
EdgeOne hotline
+852 300 80699
More local hotlines coming soon