tencent cloud

Tencent Smart Advisor-Tencent RTC Copilot

시나리오 기반 솔루션
Overview of Scenario-Based Solutions
소셜 엔터테인먼트
이커머스 라이브 방송
Audio/Video Call
원거리 실시간 조작
스마트 고객 서비스
AI 인터뷰
모듈화 솔루션
모듈화 솔루션의 개요
네트워크 품질의 모니터링
모바일 앱 생존 유지 방안
비디오 화면 속 화면 솔루션
라이브 방송 위-아래로 스크롤
스트리머 간 크로스 룸 PK 연결 방안
AI 대화 Chat 시그널링 솔루션

시나리오의 솔루션

PDF
포커스 모드
폰트 크기
마지막 업데이트 시간: 2025-12-24 10:30:37

시나리오 소개

온라인 클로 머신은 비디오 스트리밍과 원격 제어 기술을 기반으로 사용자가 스마트폰, 태블릿 또는 컴퓨터와 같은 장치를 통해 실제 클로 머신의 집게를 원격으로 실시간 제어하여 장난감이나 기타 상품을 잡는 게임입니다. 오프라인에서 클로 머신을 이용하는 것과 비슷한 체험을 제공할 수 있을 뿐만 아니라, 온라인에서 다른 관객들과 소통하며 즐길 수 있습니다. Tencent Cloud의 RTC Engine은 오디오와 비디오의 엔드투엔드 지연 시간을 300ms 미만으로 지원하며, 여러 플랫폼 간의 상호 운용성을 제공합니다. 사용자는 WeChat 미니프로그램, iOS, Android, Web에서 게임에 참여할 수 있어 언제 어디서나 즐길 수 있습니다. 클라우드 레코딩 기능을 통해 클로 머신의 재미있는 순간을 기록하여 마케팅 활동에 활용하거나 앱의 영향력을 높일 수 있습니다.




구현 방안

일반적으로 완전한 온라인 클로 머신 시나리오를 구현하려면 미디어 서비스, 시그널링 서비스 등 여러 기능 모듈을 이용해야 합니다. 각 기능 모듈의 주요 작업 및 기능 포인트는 다음 표와 같습니다.
기능 모듈
주요 작업 및 기능 포인트
미디어 서비스
오디오및 비디오 스트리밍 푸시, 오디오및 비디오 스트리밍 풀
시그널링 서비스
원격 제어
온라인 클로 머신의 전체 업무 아키텍처는 다음과 같습니다. 클로 머신 제어 단말에는 두 개의 카메라가 구성되어 있어 클로 머신에 대한 비디오 캡처 및 스트리밍을 수행합니다. 플레이어가 게임 인터페이스에 진입하면 해당 클로 머신에 대응하는 RTC Engine 방에 입장하여 클로 머신 카메라가 캡처한 비디오 스트림을 볼 수 있습니다. 게임 코인 투입 또는 돈 충전 후 플레이어는 클로 머신의 집게를 조작하여 인형을 잡을 수 있습니다. 관객도 역시 게임에 참여하여 플레이어의 인형 잡기 과정을 관전할 수 있습니다.




미디어 서비스

오디오및 비디오 스트리밍 푸시

RTMP 스트리밍 업로드
시중에 판매되는 대부분의 네트워크 카메라 또는 스트리밍 박스는 RTMP 스트리밍 기능을 갖추고 있습니다. Tencent Cloud Real-Time Communication(RTC) RTC Engine의 RTMP 스트리밍 방입장 기능을 활용하면 네트워크 카메라 또는 스트리밍 박스에서 푸시한 비디오 스트림을 RTC Engine 방에 직접 전송할 수 있습니다.



구체적인 프로세스는 다음과 같습니다.
1. Tencent Cloud RTC 서비스의 RTMP 생성 규칙을 활용하여 해당 RTMP 스트리밍 주소를 생성합니다.
2. RTMP 스트리밍 주소를 손님의 클로 머신에 연결된 네트워크 카메라 또는 스트리밍 박스에 수동으로 구성합니다.
3. RTMP 네트워크 카메라 또는 스트리밍 박스를 시작하여 비디오 스트림을 RTC Engine 방으로 전송합니다.
주의:
관련 비용은 다음과 같습니다.
기능 비트 잠금 해제: RTMP 스트리밍 방입장 기능은 RTC-Engine 월정액 패키지 스탠다드 버전 또는 프로페셔널 버전을 구독해야 잠금 해제됩니다.
사용량 비용:
스트리밍 기능을 사용하면 트랜스코딩 작업이 수행되어 트랜스코딩 비용이 발생할 수 있으며, 자세한 내용은 혼합 스트림 트랜스코딩 및 바이패스 전송 과금 설명을 참조하십시오.
스트리밍 로봇이 방에서 생성한 오디오 시간에 대한 비용을 청구합니다(참고: 온라인 미디어 스트림 기능 입력으로 인한 로봇의 방 비용은 2024년 8월 15일까지 무료이며, 2024년 8월 16일부터 비용 청구됩니다).
방 내의 시청자가 스트리밍으로 입장한 오디오 및 비디오 콘텐츠를 구독하면 정상적으로 오디오및 비디오 통화 비용이 발생하며, 자세한 내용은 오디오및 비디오 시간 과금 설명을 참조하십시오.
RTC Engine의 스트리밍 업로드
시장에는 Tencent Cloud RTC와 협력하는 하드웨어 제조업체도 있으며, 이들은 네트워크 카메라 또는 스트리밍 박스에 Tencent Cloud RTC Engine SDK를 통합하여 직접 비디오를 캡처하고 RTC Engine 방으로 푸시합니다.



대략적인 프로세스는 다음과 같습니다.
1. 클로 머신의 RTC Engine 네트워크 카메라 또는 스트리밍 박스에 SDKAppID, UserId, RoomId, Usersig를 수동으로 구성합니다.
2. RTC Engine 네트워크 카메라 또는 스트리밍 박스를 시작하여 비디오 스트림을 RTC Engine 방으로 전송합니다.

오디오및 비디오 스트리밍 풀

클로 머신이 성공적으로 오디오및 비디오 스트림을 Tencent Cloud RTC Engine 방으로 전송한 후, 사용자가 플레이어든 관객이든 상관없이 해당 RTC Engine 방에 들어가서 실시간으로 클로 머신의 화면을 볼 수 있습니다.



대략적인 프로세스는 다음과 같습니다.
1. 업무 앱은 Tencent Cloud RTC SDK를 통합합니다.
2. 업무 서버는 SDKAppID, UserId, RoomId 및 Usersig 등 필요한 SDK 매개변수를 업무 애플리케이션으로 전송하는 역할을 합니다.
3. 사용자는 업무 애플리케이션을 통해 클로 머신에 해당하는 RTC Engine 방에 들어가 RTC Engine SDK에서 제공하는 스트리밍 풀 인터페이스를 호출하여 실시간의 오디오및 비디오 스트림을 수신하고 시청합니다.

시그널링 서비스

시그널링 서비스는 시그널링 동기화를 제어하는 역할을 합니다. 일반적으로 시장에는 다양한 네트워크 통신 모드가 구성된 기성 하드웨어 모듈이 있어 해당 개발 작업 없이도 설정 및 디버깅만 해도 사용할 수 있습니다.



시그널링 서비스 통신 프로세스는 다음과 같습니다.
1. 애플리케이션 App이 업무 백엔드의 명령 인터페이스를 호출합니다.
2. 업무 백엔드에서 16진수 시리얼 패킷을 구성한 후 Netty 서비스를 통해 하드웨어 네트워크 모듈로 전송합니다.
3. 하드웨어 네트워크 모듈은 시리얼 패킷을 처리하고 하드웨어의 시리얼을 조작하여 클로 머신을 제어합니다.

레코딩 서비스

흥미로운 재생 기능은 사용자의 시청 체험과 인터랙션 효과를 크게 향상시킬 수 있습니다. 사용자는 언제든지 클로 머신의 흥미로운 순간, 특히 인형을 성공적으로 잡은 순간을 다시 볼 수 있습니다. 이는 사용자가 성공의 기쁨을 다시 체험할 수 있게 할 뿐만 아니라 인형 잡기 기술을 분석하고 향상시키는 데도 도움이 됩니다. 이를 위해 Tencent Cloud의 RTC Engine 클라우드 레코딩 기능을 활용하면 재생 레코딩을 쉽게 구현할 수 있습니다.
RTC Engine 클라우드 레코딩
RTC Engine의 클라우드 레코딩 기능은 클라우드 라이브 스트리밍 기능에 의존하지 않고 RTC Engine 내부의 실시간 레코딩 백엔드를 사용하여 오디오및 비디오를 레코딩하며 더 완전하고 통일된 레코딩 체험을 제공합니다.
RTC Engine의 클라우드 레코딩 기능을 통해 방 안의 각 사용자의 오디오및 비디오 스트림을 독립적인 파일로 레코딩할 수 있습니다(단일 스트림 레코딩).

또는 동일한 방의 오디오및 비디오 미디어 스트림을 합쳐서 하나의 파일로 레코딩할 수 있습니다(혼합 스트림 레코딩).


핵심 업무의 로직

저지연의 최적화 방안

온라인 클로 머신 솔루션에서는 지연에 대한 허용도가 매우 낮습니다. 원격 기기를 제어하기 위해 신호를 전송해야 하는데 신호 전송 시간도 비교적 짧기 때문입니다. 그러나 일반적인 시나리오에서 RTC Engine의 지연은 300ms에서 500ms 사이로 인해 업무 요구 사항을 충족시키지 못합니다. 따라서 RTC Engine의 지연을 100ms에서 300ms 이하로 줄여야 합니다. 다음은 전체 전송 경로의 각 포인트에서 지연을 최적화하는 방법에 대해 설명합니다.


RTC Engine SDK를 사용하여 스트리밍을 수집하고 푸시합니다.

1. RTC Engine SDK를 사용하여 스트리밍을 수집하고 푸시합니다.
Tencent Cloud RTC Engine SDK가 통합된 네트워크 카메라 또는 스트리밍 박스를 사용하여 수집하고 RTC Engine 방으로 직접 푸시하면, 일반 네트워크 카메라를 사용하고 RTMP 스트림 프로토콜을 통해 RTC Engine 방으로 전달하는 단계를 생략할 수 있습니다. 이를 통해 엔드투엔드 지연 시간을 300ms - 500ms에서 100ms - 300ms로 줄일 수 있습니다.
2. 저지연 스트리밍 풀링을 설정합니다.
저지연 스트리밍 풀링을 설정하려면 버퍼의 Buffer를 80-100으로 조정하고 소프트 디코딩을 설정해야 합니다. 구체적인 코드는 다음과 같습니다.
Android
iOS
Web
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("api", "SetAudioCacheParams");
JSONObject params = new JSONObject();
params.put("min_cache_time", 80); // 오디오 로컬 최소 cache의 지속 시간
params.put("max_cache_time", 100); // 오디오 로컬 최대 cache의 지속 시간
jsonObject.put("params", params);
mTRTCCloud.callExperimentalAPI(String.format(Locale.ENGLISH, jsonObject.toString()));
} catch (JSONException e) {
e.printStackTrace();
}


JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("api", "setDecoderStrategy");
JSONObject params = new JSONObject();
params.put("codecType", 1); // 소프트웨어 디코딩을 설정합니다
jsonObject.put("params", params);
mTRTCCloud.callExperimentalAPI(String.format(Locale.ENGLISH, jsonObject.toString()));
} catch (JSONException e) {
e.printStackTrace();
}




NSDictionary *jsonDic = @{
@"api": @"SetAudioCacheParams",
@"params": @{
@"min_cache_time": @(80),
@"max_cache_time": @(100)
}
};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[trtcCloud callExperimentalAPI:jsonString];


NSDictionary *jsonDic = @{
@"api": @"setDecoderStrategy",
@"params": @{
@"codecType": @(1)
}
};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[trtcCloud callExperimentalAPI:jsonString];


.... // 방 입장 관련 코드

const trtc = TRTC.create();
// 방 입장하기
try {
await trtc.enterRoom({
strRoomId,
scene:'rtc',
sdkAppId,
userId,
userSig,
playoutDelay: { min: 0, max: 0 } // 로컬 지연 시간의 수정
});
console.log('방 입장 성공');
} catch (error) {
console.error('방 입장 실패' + error);
}
주의:
클라이언트(Android, iOS)에서 저지연 인터페이스를 설정하려면 RTC Engine 12.4및 그의 이상 버전에서 사용해야 하며, 12.4 미만 버전을 사용할 경우 로컬 구성이 클라우드 제어 구성을 덮어쓰게 됩니다.
Web에서 저지연 인터페이스를 설정하려면 RTC Engine Web 5.10.0및 그의 이상 버전에서 사용해야 하며, 5.10.0 미만 버전을 사용할 경우 적용되지 않습니다.
위의 지연 구성은 테스트 단계에만 적용됩니다. 정식 출시를 원할 경우 연락주세요 을 하고 클라우드 제어 구성을 하시기 바랍니다.
지연 시간이 아직 요구 사항을 충족하지 못할 경우 연락주세요을 하시고 지연 시간을 더욱 줄일 수 있습니다.
3. 최신 카메라 펌웨어로 업그레이드합니다.
Tencent Cloud RTC Engine SDK가 통합된 네트워크 카메라 또는 스트리밍 박스 펌웨어는 지속적으로 최적화 및 업그레이드되고 있습니다. 지연 시간 감소를 위해 하드웨어 제조사와 RTC Engine SDK 팀이 협력하여 최적화 작업을 진행 중입니다. 따라서 시간 지연 문제가 발견될 경우 카메라 펌웨어를 최신 버전으로 업그레이드하여 최적화할 수 있습니다.
4. 수집 및 인코딩 비디오 매개변수를 설정합니다.
# 비디오 인코딩 설정합니다
인코딩 형식: H264
해상도: 1080P/720P/540P/360P# 선명도에 따라 설정합니다
비트레이트 제어: VBR# 가변 비트레이트
I프레임 간격: 50# 1-200 I프레임 간격이 낮을수록 지연이 낮아집니다
비트레이트: 2000kbps/1200kbps/850kbps/550kbps # 비트레이트 설정, 비트레이트가 높을수록 선명도가 높아집니다
프레임 레이트: 30# 프레임 레이트 20-60프레임
BaseProfile: 활성화# BaseProfileB프레임을 활성화하지 않으면 지연을 더욱 줄일 수 있습니다
5. 클라우드 제어 최적화.
클라우드 제어 저지연 스트리밍을 활성화하여 jitter buffer 캐시를 줄이고 푸시/풀 스트리밍의 지연을 크게 감소시킬 수 있습니다. 연락주세요을 통해 개통할 수 있습니다.

첫 프레임 지연에 대한 최적화 솔루션

온라인 클로 머신/코인 머신 시나리오에서 첫 프레임 로딩 속도는 사용자가 라이브 방송실에 진입하는 체험에 직접적인 영향을 미칩니다. 첫 프레임 지연은 사용자가 라이브 방송실을 클릭한 시점부터 화면이 처음 렌더링될 때까지의 총 소요 시간을 의미합니다. 이 지연의 병목 현상은 업무 인터페이스 응답(예: 권한 인증, 방 정보 획득) 또는 업무 컴포넌트 로딩과 스트리밍 네트워크 리소스 간의 경쟁에 존재할 수 있습니다. 따라서 아래 그림과 같이 핵심 링크에서 포인트 분석을 수행하여 병목 현상을 식별하고 이를 바탕으로 타겟팅된 최적화를 수행해야 합니다.

타겟팅된 최적화
1. 인터페이스 사전 로딩: 권한 인증 및 방 정보를 미리 비동기적으로 요청하여 핵심 경로 의존성을 줄입니다.
2. RTC 우선 스트리밍: RTC Engine의 입장 스트리밍을 우선적으로 보장합니다. RTC Engine에서 스트리밍 풀이 성공한 후에 다른 서비스를 로드합니다.
3. 동적 다운그레이드: 약한 네트워크 환경에서 불필요한 기능(예: 선물 애니메이션)을 비활성화합니다.

Android 카메라 비디오 품질 최적화 방안

일부 카메라는 RTC Engine SDK가 기본적으로 통합되어 있지 않아 특정 Android 시스템 메인보드와 함께 사용해야만 스트리밍 기능을 구현할 수 있습니다. 구형 장치의 활용도를 높이기 위해 RTC Engine 사용 시 다음과 같은 최적화 방안을 참고하여 메인보드의 하드웨어 인코딩 성능을 최대한 활용함으로써 비디오 스트리밍의 선명도와 유연성을 향상시키고 사용자 체험을 최적화할 수 있습니다.
1. 커스텀 비디오 캡처: 시스템 API를 직접 호출하여 카메라 화면을 캡처하며, 코드 디버깅을 위해 카메라 매개변수를 유연하게 조정해야 합니다
// 커스텀 비디오 캡처를 활성화합니다
mTRTCCloud.enableCustomVideoCapture(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG, true);
mTRTCCloud.setDefaultStreamRecvMode(false, false);

// 커스텀 카메라 캡처
private CustomCameraCapture mCustomCameraCapture;
private CustomFrameRender mCustomFrameRender;

// 비디오 텍스처를 사용하여 수집된 데이터를 처리하고 메모리 소비를 줄이며 비디오 프레임을 전송합니다.
private CustomCameraCapture.VideoFrameReadListener mVideoFrameReadListener = new CustomCameraCapture.VideoFrameReadListener() {
@Override
public void onFrameAvailable(EGLContext eglContext, int textureId, int width, int height) {
TRTCCloudDef.TRTCVideoFrame videoFrame = new TRTCCloudDef.TRTCVideoFrame();
videoFrame.texture = new TRTCCloudDef.TRTCTexture();
videoFrame.texture.textureId = textureId;
videoFrame.texture.eglContext14 = eglContext;
videoFrame.width = width;
videoFrame.height = height;
videoFrame.pixelFormat = TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D;
videoFrame.bufferType = TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE;

mTRTCCloud.sendCustomVideoData(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG ,videoFrame);
}
};

mCustomCameraCapture = new CustomCameraCapture();
mCustomFrameRender = new CustomFrameRender(mUserId, TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG);
// 카메라 캡처의 활성화
mCustomCameraCapture.startInternal(mVideoFrameReadListener);
// 커스텀 렌더링의 설정
mTRTCCloud.setLocalVideoRenderListener(TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D, TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE, mCustomFrameRender);
final TextureView textureView = new TextureView(this);
mLocalRenderView.addVideoView(textureView);
mCustomFrameRender.start(textureView);
설명:
비디오 전처리의 커스텀 전체 코드는 Demo을 참조할 수 있습니다.
2. 비디오 하드웨어 인코딩: 실험적 인터페이스 callExperimentalAPI를 사용하여 Android 장치의 하드웨어 인코딩 매개변수에 맞게 너비와 높이를 모두 16의 배수로 설정합니다. 다음은 참조할 수 있는 두 세트의 비디오 매개변수입니다.
높은 해상도 인코딩 매개변수: 768x1024 20fps 1500kbps.
중간 해상도 인코딩 매개변수: 480x640 20fps 900kbps.
public static final int ENCODE_WIDTH = 480;
public static final int ENCODE_HEIGHT = 640;
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("api", "setVideoEncodeParamEx");
JSONObject params = new JSONObject();
params.put("codecType", 1);
params.put("videoWidth", ENCODE_WIDTH);
params.put("videoHeight", ENCODE_HEIGHT);
params.put("videoFps", 20);
params.put("videoBitrate", 1500);
params.put("minVideoBitrate", 300);
params.put("streamType", 0);
params.put("resolutionMode", 1);
jsonObject.put("params", params);
} catch (JSONException e) {
throw new RuntimeException(e);
}
mTRTCCloud.callExperimentalAPI(jsonObject.toString());
3. Speech 오디오 수집: 낮은 지연 시간 요구 사항으로 인해 오디오 기능을 사용해야 합니다. 그러나 Android 기기의 오디오 성능이 부족할 수 있으며 기본 음질을 사용할 경우 성능 요구 사항을 충족하지 못할 수 있습니다. 따라서 startLocalAudio 인터페이스를 호출하고 TRTC_AUDIO_QUALITY_SPEECH 매개변수를 설정하는 것을 권장합니다.
mTRTCCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_SPEECH);
4. 최신 Android SDK 사용: 새 버전의 Android SDK는 지속적으로 최적화되므로 최신 Android로 디버깅하세요.

방안 관련 제품

시스템 계층
제품명
시나리오 용도
접속 계층
시간 저지연 및 고수준의 오디오 및 비디오 실시간 인터랙션 솔루션을 제공하며,이것이 오디오 및 비디오 통화 시나리오의 기반 인프라 기능입니다.
클라우드 서비스
오디오 및 비디오 미디어를 위해 제작 업로드, 저장, 트랜스코딩, 미디어 처리, 미디어 AI, 가속 분배 재생, 저작권 보호 등 일체형의 고수준 미디어 서비스를 제공합니다.
데이터 저장
오디오 및 비디오 레코딩 파일, 오디오 및 비디오 슬라이스 파일의 저장 서비스를 제공합니다.


도움말 및 지원

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

피드백