라이브 방송

본 튜토리얼은 주로 시나리오 기반 라이브 방송을 사용하여 라이브 방송을 구현하는 방법을 소개합니다.

TRTC 시나리오 및 캐릭터

일반적인 업무 시나리오에서는 모든 사용자가 스트림 배포를 필요하는 것이 아니라 일부 사용자는 스트림 구독만 필요합니다.

TRTC에는 2가지 시나리오가 있습니다.
rtc 시나리오: 기본 시나리오입니다. rtc 시나리오에서 사용자 모두가 호스트이며, 이 시나리오에는 시청자 캐랙터가 존재하지 않습니다.
live 시나리오: 이 시나리오에서 사용자는 호스트시청자의 2가지 캐릭터로 구분됩니다. 이 2개 캐랙터의 차이점은 다음과 같습니다.
호스트 푸시 가능합니다. 1개 방은 최대 50개 호스트의 동시 푸시를 지원합니다.
시청자 푸시 불가능합니다. 시청자 수에 대한 제한은 없습니다.

호스트 측

호스트 측에서 오디오/비디오 통화를 구현하는 절차는 rtc 시나리오의 구현 절차와 기본적으로 동일합니다. 참고: 기본 오디오/비디오 통화

주요 차이점이라면 trtc.enterRoom()를 호출할 때 설정되는 매개변수 시나리오 및 캐릭터입니다. 아래 예시 코드를 참고하시기 바랍니다.
await trtc.enterRoom({
scene: TRTC.TYPE.SCENE_LIVE,
role: TRTC.TYPE.ROLE_ANCHOR,
sdkAppId,
userId,
userSig,
roomId
});

시청자 측

시청자로 입장

캐릭터 매개변수를 TRTC.TYPE.ROLE_AUDIENCE로 설정합니다.
await trtc.enterRoom({
scene: TRTC.TYPE.SCENE_LIVE,
role: TRTC.TYPE.ROLE_AUDIENCE,
sdkAppId,
userId,
userSig,
roomId
});

원격 오디오 재생

기본적인 상황에서, SDK는 자동으로 원격 오디오를 재생하므로 API를 호출할 필요 없이 원격 오디오를 재생할 수 있습니다.
자동 재생 정책 제한
사용자가 방으로 들어가기 전에 페이지와 인터랙션을 하지 않으면 자동 재생 정책 제한으로 인해 오디오 자동 재생이 실패할 수 있습니다. 자동 재생 제한 처리를 참고하여 처리해야 합니다.
SDK의 오디오 자동 재생을 원하시지 않으면 아래 방법을 시도할 수 있습니다.
trtc.on(TRTC.EVENT.REMOTE_AUDIO_AVAILABLE, event => {
// Call this api when you need to play remote audio.
trtc.muteRemoteAudio(event.userId, false);
// Stop remote audio
trtc.muteRemoteAudio(event.userId, true);
})
// Setting autoReceiveAudio = false to turn off automatic audio playback.
await trtc.enterRoom({ ..., autoReceiveAudio: false });

원격 비디오 재생

1. 방에 들어가기 전에 TRTC.EVENT.REMOTE_VIDEO_AVAILABLE 이벤트를 모니터링하여 모든 원격 사용자의 비디오 배포 이벤트를 수신합니다.
2. 이 이벤트를 수신한 후 trtc.startRemoteVideo()를 호출하여 원격 비디오 스트림을 재생합니다.
trtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, ({ userId, streamType }) => {
// To play the video image, you need to place an HTMLElement in the DOM,
// which can be a div tag, assuming its id is `${userId}_${streamType}`
const view = `${userId}_${streamType}`;
trtc.startRemoteVideo({ userId, streamType, view });
});

캐릭터 전환 방법

시청자 캐릭터는 푸시 권한이 없기 때문에 시청자가 호스트와 통화를 하려면 trtc.switchRole를 통해 호스트 캐릭터로 전환한 다음 푸시해야 합니다.
// Switch to the anchor
await trtc.switchRole(TRTC.TYPE.ROLE_ANCHOR);
// Turn on mic and camera, then the other anchor in the room will able to receive your audio and video.
await trtc.startLocalAudio();
await trtc.startLocalVideo();
// Switch back to the audience when the calling is ended
await trtc.switchRole(TRTC.TYPE.ROLE_AUDIENCE);