tencent cloud

Game Multimedia Engine

릴리스 노트
제품 소개
제품 개요
장점 및 특징
제품 기능
응용 시나리오
보안 및 컴플라이언스 인증
사용자 튜토리얼
SDK 다운로드 가이드
제품 기능 데모
기본 기능 데모
시나리오 기반 Demo
콘솔 가이드
사용량 조회
서비스 활성화
시작하기
Quick Integration of SDK
Quick Integration of Sample Project
기본 기능 개발 가이드
인증 키
실시간 음성 채팅 역할 설정
음질 선택
고급 기능 개발 가이드
서버 녹음
레인지 보이스
3D 음향 효과
음향 효과 및 반주
네트워크 오디오 스트림 포워딩 라우팅
사용자 지정 메시지 채널
회사 방화벽 제한을 해결하는 방법
Language Parameter Reference List
GME 채팅방 관리 통합
클라이언트 API
Unity SDK
SDK for Unreal Engine
Cocos2D SDK
SDK for Windows
SDK for iOS
SDK for Android
SDK for macOS
H5 SDK
Electron SDK
SDK for Flutter
SDK Version Upgrade Guide
에러 코드
Toolchain
Server APIs
History
Introduction
API Category
Usage APIs
Recording APIs
Making API Requests
Voice Chat APIs
Application APIs
Data Types
Error Codes
FAQ
제품 기능
문제 해결 가이드
과금
Sample Project 사용 문제
일반 문제
인증
방 입장 실패
사운드 및 오디오
네트워크
음성을 텍스트로 변환
프로그램 내보내기
Service Agreement
Service Level Agreement
문의하기
용어집
GME 정책
데이터 처리 및 보안 계약
개인 정보 보호 정책
문서Game Multimedia Engine고급 기능 개발 가이드네트워크 오디오 스트림 포워딩 라우팅

네트워크 오디오 스트림 포워딩 라우팅

PDF
포커스 모드
폰트 크기
마지막 업데이트 시간: 2024-01-18 16:00:04
본문은 개발자가 Game Multimedia Engine(GME)용 API를 쉽게 디버그하고 통합할 수 있도록 해주는 사용자 정의 오디오 포워딩 라우팅 사용에 대한 자세한 설명을 제공합니다.

사용 사례

시나리오 설명: 두 명의 친구가 팀을 이루어 작은 팀을 구성한 후 그들은 세 명의 낯선 사람을 연결하여 큰 팀을 구성합니다. 그들은 큰 팀에서는 모든 구성원의 목소리를 듣고 싶어하지만 작은 팀에서는 서로만 이야기합니다.
이는 맞춤형 오디오 라우팅 기능으로 달성할 수 있습니다. 여기서는 5명의 사용자가 모두 동일한 음성 대화방에 입장합니다. 그런 다음 오디오 라우팅 API 설정을 통해 플레이어가 2인 팀 또는 전체 방에서 음성을 듣도록 설정할 수 있을 뿐만 아니라 2인 팀 또는 전체 방에서 들리도록 설정할 수 있습니다.
오디오 규칙 거리: SetServerAudioRouteSendOperateType(AUDIO_ROUTE_SEND_WHITE_LIST,"2인 팀 list",ITMG_SERVER_AUDIO_ROUTE_RECV_TYPE,"2인 팀 list"); 이런 식으로 오디오는 목록에 있는 플레이어에게만 전송되고 3인 팀에서만 수신됩니다.




전제 조건

실시간 음성 채팅 서비스 활성화 완료: 서비스 활성화를 참고하십시오.
GME SDK 통합 완료: 핵심 API 및 실시간 음성 채팅 API 통합을 포함합니다. 자세한 내용은 Native SDK 빠른 통합, Unity SDK 빠른 통합, Unreal SDK 빠른 통합을 참고하십시오.
GME의 음성 채팅 기능을 이용하여 성공적으로 음성방에 입장하였고, 마이크(EnableMic)와 스피커(EnableSpeaker)를 켰습니다.

오디오 포워딩 라우팅에 액세스

오디오 포워딩 규칙 설정

이 API는 오디오 포워딩 규칙을 설정하는 데 사용되며 성공적인 방 입장 콜백에서 호출됩니다. 호출된 후 이 API는 이 방 입장에 적용되며 방을 나간 후에는 유효하지 않습니다.
주의사항:
음소거 기능인 AddBlackList는 로컬에서 적용되며 사용자 지정 오디오 라우팅보다 우선 순위가 높습니다. 예를 들어 A가 SetServerAudioRouteSendOperateType을 통해 B의 음성만 들리도록 설정했지만 AddBlackList를 호출하여 B를 음소거하면 A는 B의 음성을 듣지 않습니다.

API 프로토타입

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를 반환하면 API를 다시 호출하십시오.
반환된 결과에 대한 자세한 설명은 에러 코드를 참고하십시오.

예시 코드

실행 문
@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;
}
}

오디오 포워딩 규칙 가져오기

이 API는 오디오 포워딩 규칙을 가져오는 데 사용됩니다. 호출된 후 API는 규칙을 반환하고 전달된 배열 매개변수는 해당 규칙의 openId를 반환합니다.

API 프로토타입

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 API에서 AUDIO_ROUTE_RECV_INQUIRE_ERROR를 사용하지 마십시오.


도움말 및 지원

문제 해결에 도움이 되었나요?

피드백