RTC Engine
  • 개요
  • Web
    • Demo 실행
    • SDK 빠른 실행
    • 기본 기능
      • 화면 공유
      • 라이브 방송
      • 미디어 장치
      • 볼륨
      • 인코딩 구성 파일 설정
      • 네트워크 품질 검사
      • 검출 능력
    • 고급 기능
      • AI 노이즈 캔슬링 활성화
      • 오디오 믹싱 활성화
      • 워터마크 활성화
      • Enable Virtual Background
      • 뷰티 및 특수효과 활성화
      • 데이터 메시지
      • 사용자 정의 수집 및 렌더링
    • 인터페이스 목록
    • 배포 설명
    • 플랫폼 지원
    • Web 관련 자주 받는 질문
      • 다중 사용자 비디오 통화 최적화
      • 자동 재생 제한 처리
      • 방화벽 제한 대응
      • 기타
  • Android
    • Run Sample Code
    • 통합
      • 2. SDK 가져오기
      • 3. 룸 들어가기
      • 4. 오디오/비디오 스트림 구독
      • 5. 오디오/비디오 스트림 배포
      • 6. 룸 퇴출
      • 7. 네트워크 품질 검사
      • 8. 화면 공유 활성화
      • 9. 비디오 품질 설정
      • 10. 비디오 회전
    • 네트워크 품질 테스트
    • 사용자 정의 수집 및 렌더링
    • 사용자 정의 오디오 수집 및 재생
    • 고객 인터페이스
      • 개요
      • TRTCCloud
      • TRTCStatistics
      • TRTCCloudListener
      • TXAudioEffectManager
      • TXBeautyManager
      • TXDeviceManager
      • 유형 정의
      • 인터페이스 폐기
      • 에러코드
    • 솔루션
      • 실시간 합창 (TUIKaraoke)
        • 빠른 통합
        • 실시 절차
        • 노래 동기화
        • 가사 동기화
        • 음성 동기화
        • 혼합 스트림 솔루션
        • TRTCKaraoke 관련 인터페이스
        • 자주 받는 질문들
    • 배포 설명
  • iOS
    • Run Sample Code
    • 통합
      • 2. SDK 가져오기
      • 3. 룸 들어가기
      • 4. 오디오/비디오 스트림 구독
      • 5. 오디오/비디오 스트림 배포
      • 6. 룸 퇴출
      • 7. 네트워크 품질 검사
      • 8. 화면 공유 활성화
      • 9. 비디오 품질 설정
      • 10. 비디오 회전
    • 네트워크 품질 테스트
    • 사용자 정의 수집 및 렌더링
    • 사용자 정의 오디오 수집 및 재생
    • 고객 인터페이스
      • 개요
      • TRTCCloud
      • TRTCCloudDelegate
      • TRTCStatistics
      • TXAudioEffectManager
      • TXBeautyManager
      • TXDeviceManager
      • 유형 정의
      • 인터페이스 폐기
      • ErrorCode
    • 솔루션
      • 빠른 통합
      • 실시 절차
      • 노래 동기화
      • 가사 동기화
      • 음성 동기화
      • 혼합 스트림 솔루션
      • TRTCKaraoke 관련 인터페이스
      • 자주 받는 질문들
    • 배포 설명
  • macOS
    • Run Sample Code
    • 통합
      • 2. SDK 가져오기
      • 3. 룸 들어가기
      • 4. 오디오/비디오 스트림 구독
      • 5. 오디오/비디오 스트림 배포
      • 6. 룸 퇴출
      • 7. 네트워크 품질 검사
      • 8. 화면 공유 활성화
      • 9. 컴퓨터 소리 공유
      • 10. 비디오 품질 설정
      • 11. 비디오 회전
    • 하드웨어 장치 테스트
    • 네트워크 품질 테스트
    • 사용자 정의 수집 및 렌더링
    • 사용자 정의 오디오 수집 및 재생
    • 고객 인터페이스
      • 개요
      • TRTCCloud
      • TRTCCloudDelegate
      • TRTCStatistics
      • TXAudioEffectManager
      • TXBeautyManager
      • TXDeviceManager
      • 유형 정의
      • 인터페이스 폐기
      • ErrorCode
      • 배포 설명
    • 배포 설명
  • Windows
    • Run Sample Code
    • 통합
      • 2. SDK 가져오기
      • 3. 룸 들어가기
      • 4. 오디오/비디오 스트림 구독
      • 5. 오디오/비디오 스트림 배포
      • 6. 룸 퇴출
      • 7. 네트워크 품질 검사
      • 8. 화면 공유 활성화
      • 9. 비디오 품질 설정
      • 10. 비디오 회전
    • 하드웨어 장치 테스트
    • 네트워크 품질 테스트
    • 사용자 정의 수집 및 렌더링
    • 사용자 정의 오디오 수집 및 재생
    • 고객 인터페이스
      • 개요
      • ITRTCCloud
      • ITRTCStatistics
      • TRTCCloudCallback
      • ITXAudioEffectManager
      • ITXDeviceManager
      • 유형 정의
      • 인터페이스 폐기
      • 에러코드
    • 배포 설명
  • Electron
    • 통합
      • 1. 인터페이스 예시
      • 2. SDK 가져오기
      • 3. 룸 들어가기
      • 4. 오디오/비디오 스트림 구독
      • 5. 오디오/비디오 스트림 배포
      • 6. 룸 퇴출
      • 7. 네트워크 품질 검사
      • 8. 화면 공유 활성화
      • 9. 컴퓨터 소리 공유
      • 10. 비디오 품질 설정
      • 11. 비디오 회전
    • 고객 인터페이스
      • 개요
      • 에러코드
  • Flutter
    • 통합
      • 1. 인터페이스 예시
      • 2. SDK 가져오기
      • 3. 룸 들어가기
      • 4. 오디오/비디오 스트림 구독
      • 5. 오디오/비디오 스트림 배포
      • 6. 룸 퇴출
      • 7. 네트워크 품질 검사
      • 8. 화면 공유 활성화
      • 9. 컴퓨터 소리 공유
      • 10. 비디오 품질 설정
      • 11. 비디오 회전
    • 고객 인터페이스
      • 개요
      • 에러코드
  • Unity
    • 통합
      • 1. 인터페이스 예시
      • 2. SDK 가져오기
    • 고객 인터페이스
      • 개요
      • 에러코드
  • QT
    • 통합
      • 1. SDK 가져오기
  • 개요
    • 개요
  • 개념
  • Features
  • 성능 통계
  • 가격
    • 무료시간
    • RTC-Engine 패키지
    • 구독 패키지 기간 과금 설명
    • 종량제
      • 오디오 및 비디오 시간 과금 설명
      • 클라우드 녹화 과금 설명
      • 믹스 트랜스코딩 및 CDN 중계 과금 설명
  • 자주 받는 질문들
    • 자주 받는 질문들
    • 마이그레이션 가이드
      • Twilio Video에서 TRTC로의 마이그레이션
      • 과금
      • Features
      • UserSig
      • 방화벽 제한
      • 설치 패키지 축소 방법
      • TRTCCalling Web 관련
      • 오디오/비디오 품질
      • 기타
RTC Engine

8. 화면 공유 활성화

Tencent Cloud TRTC는 화면 공유 기능을 지원합니다. Mac 플랫폼에서는 메인 채널 공유와 서브 채널 공유, 두 가지 화면 공유 방법을 지원합니다.
서브 채널 공유 TRTC에서는 화면 공유를 위해 비디오 스트림의 업스트림 채널을 단독으로 활성화할 수 있으며, 이를 '서브 채널(substream)'이라고 부릅니다. 서브 채널 공유란 호스트가 카메라 화면과 스크린 화면, 두 채널의 화면을 동시에 업스트림하는 것입니다. 이는 VooV Meeting의 사용 방법으로, startScreenCapture 인터페이스 호출 시 TRTCVideoStreamType 매개변수를 TRTCVideoStreamTypeSub로 지정하여 해당 모드를 활성화할 수 있습니다. 해당 채널 화면 시청 시 전용 startRemoteSubStreamView 인터페이스가 필요합니다.
메인 채널 공유 TRTC에서 일반적으로 카메라 데이터가 지나가는 터널을 '메인 채널(bigstream)'이라고 하며, 메인 채널 공유란 카메라 터널을 통한 화면 공유입니다. 해당 모드에서 호스트가 보유한 비디오 스트림 업스트림 채널은 1개이며, 상호 배제 관계인 카메라 화면과 스크린 화면 중 하나를 업스트림합니다. startScreenCapture 인터페이스 호출 시 TRTCVideoStreamType 매개변수를 TRTCVideoStreamTypeBig으로 지정해 해당 모드를 활성화할 수 있습니다.

지원 플랫폼

iOS
Android
Mac OS
Windows
Electron
Chrome 브라우저

공유 타깃 획득

getScreenCaptureSourcesWithThumbnailSize 를 통해 공유할 수 있는 창 리스트를 열거할 수 있으며, 모든 공유 가능한 타깃은 TRTCScreenCaptureSourceInfo 객체입니다.
Mac OS의 데스크톱 화면도 공유 가능 타깃입니다. 일반적인 Mac 창의 type은 TRTCScreenCaptureSourceTypeWindow이며, 데스크 화면의 type은 TRTCScreenCaptureSourceTypeScreen입니다.
type 이외의 모든 TRTCScreenCaptureSourceInfo는 다음 필드 정보가 있습니다.
필드
유형
의미
type
TRTCScreenCaptureSourceType
수집 소스 유형: 지정 유형은 창 혹은 화면
sourceId
NSString
수집 소스 ID: 창, 해당 필드는 지시 창 핸들을 가리킵니다.<br>화면, 해당 필드는 화면 ID를 가리킵니다.
sourceName
NSString
창 이름, 화면일 경우Screen0 Screen1... 반환
extInfo
NSDictionary
공유 창의 부가 정보
thumbnail
NSImage
창 썸네일
icon
NSImage
창 아이콘
상기 정보로 간단한 리스트 페이지를 구현하고 공유 타깃을 열거해 다음과 같이 사용자가 선택하도록 할 수 있습니다.

공유 타깃 선택

TRTC SDK는 3가지 공유 모드를 지원합니다. selectScreenCaptureTarget으로 지정할 수 있습니다.
전체 화면 공유: 전체 화면 창을 공유하고 멀티 모니터 화면 분할을 지원합니다. type이 TRTCScreenCaptureSourceTypeScreen인 screenSource 매개변수를 지정하고 rect를 { 0, 0, 0, 0 }으로 설정해야 합니다.
지정 지역 공유: 화면의 어떤 구역을 공유하며, 사용자가 지정한 구역 위치의 좌표가 필요합니다. type이 TRTCScreenCaptureSourceTypeScreen인 screenSource 매개변수를 지정하고 captureRect를 비 NULL로 설정해야 합니다. 예: { 100, 100, 300, 300 }
지정 창 공유: 타깃 창의 콘텐츠 공유로, 사용자가 어떤 창을 공유할지 선택해야 합니다. type이 TRTCScreenCaptureSourceTypeWindow인 screenSource 매개변수를 설정하고 captureRect를 { 0, 0, 0, 0 }으로 설정해야 합니다.
explain
추가 매개변수 2개:
매개변수 capturesCursor은 마우스 포인터의 캡처 여부를 지정할 때 사용합니다.
매개변수 highlight는 현재 공유 중인 창의 하이라이트 및 캡처한 아이콘이 가려졌을 경우 사용자에게 가림 제거 알림 여부 지정 시 사용합니다. 이 부분의 UI 특수효과는 SDK 내부에 구현됩니다.

화면 공유 시작

공유 타깃 선택 후 startScreenCapture 인터페이스를 사용하면 화면 공유를 실행할 수 있습니다.
pauseScreenCapturestopScreenCapture 두 함수의 차이는 전자가 화면 콘텐츠 캡처를 중지하고 일시 중지된 순간에 캡처된 이미지를 표시한다는 점에 있습니다. 원격에서는 resumeScreenCapture까지 마지막 프레임의 정지 이미지를 보게 됩니다.
/**
* 7.6 [화면 공유] 화면 공유 실행
* @param view 렌더링 제어 파일이 있는 상위 제어 파일
*/
- (void)startScreenCapture:(NSView *)view;

/**
* 7.7 [화면 공유] 화면 수집 중지
* @return 0: 성공 <0:실패
*/
- (int)stopScreenCapture;

/**
* 7.8 [화면 공유] 화면 공유 일시 중지
* @return 0: 성공 <0:실패
*/
- (int)pauseScreenCapture;

/**
* 7.9 [화면 공유] 화면 공유 복구
*
* @return 0: 성공 <0:실패
*/
- (int)resumeScreenCapture;

화질 설정

setSubStreamEncoderParam 인터페이스에서 해상도, 비트 레이트, 프레임 레이트 등 화면 공유의 화질을 설정할 수 있습니다. 다음 값을 참고하십시오.
해상도 레벨
해상도
프레임 레이트
비트 레이트
초고화질(HD+)
1920 × 1080
10
800 kbps
고화질(HD)
1280 × 720
10
600kbps
표준 화질(SD)
960 × 720
10
400 kbps

공유 화면 시청

Mac/Window 공유 화면 시청 방 안에 있는 Mac/Windows 사용자가 화면 공유 기능을 실행하면 서브스트림을 통해 화면이 공유됩니다. 방 안의 다른 사용자들은 TRTCCloudDelegate의 onUserSubStreamAvailable 이벤트를 통해 해당 통지를 수신합니다. 공유 화면을 시청하려면 startRemoteSubStreamView 인터페이스를 통해 원격 사용자의 서브스트림 화면을 렌더링합니다.
Android/iOS 공유 화면 시청 사용자가 Android/iOS를 통해 화면 공유를 실행하면 메인스트림을 통해 공유가 시작됩니다. 방 안의 다른 사용자는 TRTCCloudDelegate의 onUserVideoAvailable 이벤트를 통해 이 공지를 수신합니다. 공유 화면을 시청하려면 startRemoteView 인터페이스를 통해 원격 사용자의 메인스트림 화면을 렌더링합니다.
//예시 코드: 공유 화면 시청

- (void)onUserSubStreamAvailable:(NSString *)userId available:(BOOL)available {
if (available) {
[self.trtcCloud startRemoteSubStreamView:userId view:self.capturePreviewWindow.contentView];
} else {
[self.trtcCloud stopRemoteSubStreamView:userId];
}
}

FAQ

방에서는 동시에 몇 명이 화면을 공유할 수 있습니까? 현재 한 TRTC 멀티미디어 방에서는 한 채널의 화면만 공유할 수 있습니다.
지정 창 공유(SourceTypeWindow) 시 창의 크기가 달라질 경우 비디오 스트림의 해상도도 변경되나요? 기본적으로 SDK 내부에서는 공유한 창의 크기에 따라 자동으로 코드 매개변수를 조정합니다. 고정 해상도가 필요한 경우 setSubStreamEncoderParam 인터페이스를 호출하여 화면 공유 코딩 매개변수를 설정하거나 startScreenCapture 호출 시 해당 코딩 매개변수를 지정해야 합니다.