Tencent Cloud TRTC는 iOS 플랫폼에서 두 가지 화면 공유 방법을 지원합니다.
애플리케이션 내 공유
현재 App의 화면만 공유할 수 있으며, 해당 기능은 iOS 13 버전 이상의 운영 체제에서만 지원됩니다. 현재 App 이외의 화면 콘텐츠를 공유할 수 없으므로 높은 수준의 개인 정보 보호가 필요한 시나리오에 적합합니다.
애플리케이션 간 공유
Apple의 Replaykit 솔루션을 기반으로 시스템 전체의 화면 콘텐츠 공유가 가능합니다. 단, 현재 App에서 별도로 Extension 확장 모듈을 제공해야 하므로 애플리케이션 내 공유보다 연결 절차가 더 많습니다.
지원 플랫폼
iOS
Android
Mac OS
Windows
Electron
Chrome 브라우저
✓
✓
✓
✓
✓
✓
애플리케이션 내 공유
애플리케이션 내 공유 방법은 매우 간단합니다. TRTC SDK에서 제공하는 startScreenCaptureInApp 인터페이스를 호출하고 인코딩 매개변수 TRTCVideoEncParam을 전송하면 됩니다. 이 매개변수는 nil로 설정할 수 있으며, 이때 SDK는 화면 공유 전에 설정된 인코딩 매개변수를 사용합니다.
iOS 화면 공유 시 다음과 같은 인코딩 매개변수를 권장합니다.
매개변수 항목
매개변수 이름
일반 권장 값
텍스트 교육 시나리오
해상도
videoResolution
1280 × 720
1920 × 1080
프레임 레이트
videoFps
10 FPS
8 FPS
최대 비트 레이트
videoBitrate
1600 kbps
2000 kbps
해상도 어댑티브
enableAdjustRes
NO
NO
일반적으로 화면 공유 콘텐츠는 많은 변화가 없으므로 FPS를 높게 설정하는 것은 비경제적입니다. 권장 설정값은 10FPS입니다.
공유하는 화면 콘텐츠에 텍스트가 많이 포함되어 있는 경우 해상도와 비트 레이트를 알맞게 높이는 것이 좋습니다.
최대 비트 레이트(videoBitrate)란 화면 변화가 심할 때 최대로 출력되는 비트 레이트를 의미하며, 화면 콘텐츠의 변화가 적은 경우 실제 인코딩 비트 레이트는 비교적 낮습니다.
애플리케이션 간 공유
iOS 시스템에서 애플리케이션 간 화면 공유 시 메인 App 프로세스의 푸시 스트림을 위해 Broadcast Upload Extension 녹화 프로세스를 추가해야 합니다. Extension 녹화 프로세스는 화면을 녹화해야 할 때 시스템에서 생성하며, 시스템에서 수집한 화면 이미지를 수신합니다. 따라서 다음과 같은 절차를 수행해야 합니다.
1. App Group을 생성하고 XCode에서 설정(옵션)을 진행합니다. Extension 녹화 프로세스와 메인 App 프로세스 간의 통신을 가능하게 하는 과정입니다.
2. 프로그램에 Broadcast Upload Extension의 Target을 생성하고, 여기에 SDK 압축 패키지 중 확장 모듈을 위해 사용자 정의된 TXLiteAVSDK_ReplayKitExt.framework를 통합합니다.
3. 메인 App이 Broadcast Upload Extension에서 수신되는 녹화 데이터를 대기하도록 메인 App의 수신 로직과 연결합니다.
주의사항:
1단계를 건너뛴 경우, 즉 App Group을 설정하지 않은 경우(인터페이스가 nil 전송)에도 화면 공유를 실행할 수 있습니다. 그러나 안정성이 저하되는 문제가 발생하므로 절차가 많더라도 최대한 정확한 App Group을 설정하여 화면 공유 기능의 안정성을 확보하십시오.
2. 프로그램 인터페이스 버튼을 만들고, 버튼의 응답 함수에 TRTCBroadcastExtensionLauncher의 launch 함수를 호출하면 화면 공유 기능을 호출할 수 있습니다.
// 사용자 정의 버튼 응답 방법
- (IBAction)onScreenButtonTapped:(id)sender {
[TRTCBroadcastExtensionLauncher launch];
}
주의사항:
Apple은 iOS 12.0에 RPSystemBroadcastPickerView를 추가하여 애플리케이션에서 런처를 팝업할 수 있도록 함으로써 사용자가 화면 공유 여부를 확인할 수 있도록 했습니다. RPSystemBroadcastPickerView는 아직까지 사용자 정의 인터페이스를 지원하지 않고 있으며 공식적인 호출 방법도 없습니다.
TRTCBroadcastExtensionLauncher의 작동 원리는 RPSystemBroadcastPickerView의 하위 View를 순회하여, UIButton을 찾고 클릭 이벤트를 트리거하는 방식입니다.
그러나 이 솔루션은 Apple에서 공식적으로 권장하는 방식이 아니며, 신규 시스템 업데이트에서 무효화될 수도 있기 때문에 4단계는 단순 선택사항으로 해당 솔루션 적용 시 사용자가 리스크를 감수해야 합니다.
공유 화면 시청
Mac/Window 공유 화면 시청
방 안에 있는 Mac/Windows 사용자가 화면 공유를 실행하면 서브스트림을 통해 공유가 시작됩니다. 방 안의 다른 사용자는 TRTCCloudDelegate의 onUserSubStreamAvailable 이벤트를 통해 이 공지를 수신합니다.
공유 화면을 시청하려면 startRemoteSubStreamView 인터페이스를 통해 원격 사용자의 서브스트림 화면을 렌더링합니다.
Android/iOS 공유 화면 시청
사용자가 Android/iOS를 통해 화면 공유를 실행하면 메인스트림을 통해 공유가 시작됩니다. 방 안의 다른 사용자는 TRTCCloudDelegate의 onUserVideoAvailable 이벤트를 통해 이 공지를 수신합니다.
공유 화면을 시청하려면 startRemoteView 인터페이스를 통해 원격 사용자의 메인스트림 화면을 렌더링합니다.