startRemoteView를 호출하여 원격 사용자의 비디오 이미지를 재생할 수 있지만 사용자의 비디오 이미지를 전달하는 렌더링 컨트롤로 SDK에 view 객체를 전달한 후에만 가능합니다.
startRemoteView의 첫 번째 매개변수는 원격 사용자의 userId, 두 번째는 사용자의 스트림 유형, 세 번째는 전달할 view 객체입니다. 여기서 두 번째 매개변수 streamType에는 세 가지 유효한 값이 있습니다.:
TRTCVideoStreamTypeBig: 사용자의 기본 스트림 이미지로, 일반적으로 사용자의 카메라 이미지를 전송하는 데 사용됩니다.
TRTCVideoStreamTypeSub: 사용자의 서브 스트림 이미지로, 일반적으로 사용자의 화면 공유 이미지를 전송하는 데 사용됩니다.
TRTCVideoStreamTypeSmall: 사용자의 기본 스트림 이미지의 작은 저화질 이미지. 사용자가 ‘듀얼 스트림 모드(enableEncSmallVideoStream)’를 활성화한 후에만 원격 사용자의 저화질 이미지를 재생할 수 있습니다. 원본 품질의 기본 스트림과 낮은 품질의 작은 스트림은 동시에 재생할 수 없습니다.
stopRemoteView API를 호출하여 한 원격 사용자의 비디오 재생을 중지하거나 stopAllRemoteView API를 호출하여 모든 원격 사용자의 비디오 재생을 중지할 수 있습니다.
4단계와 5단계에서 원격 사용자의 오디오/비디오 재생을 제어할 수 있습니다. 그러나 정보가 충분하지 않으면 다음을 알 수 없습니다:
현재 방에는 어떤 사용자가 있습니까?
카메라와 마이크가 켜져 있습니까?
이 문제를 해결하려면 SDK에서 다음 이벤트 콜백을 수신 대기해야 합니다:
오디오 상태 변경 알림(onUserAudioAvailable)
원격 사용자가 마이크를 켜고 끌 때 onUserAudioAvailable(userId, boolean)을 수신하여 상태 변경을 가져올 수 있습니다.
비디오 상태 변경 알림(onUserVideoAvailable)
원격 사용자가 카메라를 켜고 끌 때 onUserVideoAvailable(userId, boolean)을 수신하여 상태 변경을 가져올 수 있습니다.
원격 사용자가 화면 공유를 활성화/비활성화할 때 onUserSubStreamAvailable(userId, boolean)을 수신하여 상태 변경을 가져올 수 있습니다.
사용자 방 입장/퇴장 알림(onRemoteUserEnter/LeaveRoom)
원격 사용자가 현재 방에 들어갈 때 onRemoteUserEnterRoom(userId)을 사용하여 사용자의 userId를 얻을 수 있습니다. 원격 사용자가 현재 방을 나갈 때 onRemoteUserLeaveRoom(userId, reason)을 사용하여 사용자의 userId와 퇴장 이유를 얻을 수 있습니다.
주의사항:
구체적으로, onRemoteUserEnter/LeaveRoom은 앵커의 방 입/퇴장 알림만 받을 수 있습니다. 이는 방에 많은 수의 온라인 시청자가 있을 때 방 입/퇴장 알림을 자주 수신하는 문제를 방지합니다.
이러한 이벤트 콜백을 사용하면 다음 샘플 코드를 참고하여 방에 있는 사용자와 카메라와 마이크를 켰는지 여부를 알 수 있습니다. 여기서 mCameraUserList, mMicrophoneUserList 및 mUserList는 각각 다음 정보를 유지하는 데 사용됩니다.
방법1: 플레이어단 오디오 스트림 구독 중지
원격 사용자 denny의 오디오 재생을 중지하려면 muteRemoteAudio("denny", true) 함수를 호출하면 SDK가 denny에서 오디오 데이터 스트림 가져오기를 중지합니다. 이 모드에서는 더 적은 트래픽이 사용됩니다. 그러나 SDK는 오디오 재생을 재개하기 위해 오디오 데이터 풀 프로세스를 다시 시작해야 하므로 ‘음소거’ 상태에서 ‘음소거 해제 상태’로 전환하는 속도가 느립니다.
방법2: 재생 볼륨 레벨을 0으로 조정
음소거 상태를 더 빠르게 전환하려면 setRemoteAudioVolume("denny", 0)을 사용하여 원격 사용자 denny의 재생 볼륨 수준을 0으로 설정할 수 있습니다. 이 API는 네트워크 작업을 포함하지 않기 때문에 매우 빠르게 적용됩니다.
방법3: 원격 사용자 마이크 끄기
본 문서에 설명된 모든 작업은 플레이어에서 수행되며 현재 사용자에게만 적용됩니다. 예를 들어 muteRemoteAudio("denny", true)를 호출하여 원격 사용자 denny를 음소거하면 방의 다른 사용자는 여전히 denny를 들을 수 있습니다.
denny의 소리를 완전히 ‘없애’려면 denny의 오디오 게시 동작에 영향을 주어야 합니다. 자세한 내용은 오디오/비디오 스트림 게시를 참고하십시오.