TRTCCloud
のstartScreenCapture()インターフェースを呼び出すだけで開始することができます。ただし、明瞭で安定した共有効果を実現するには、次の3つの点に注意する必要があります。<activityandroid:name="com.tencent.rtmp.video.TXScreenCapture$TXScreenCaptureAssistantActivity"android:theme="@android:style/Theme.Translucent"/>
encParams
を設定することにより、画面共有のエンコード品質を指定することができます。encParams
をnullに指定した場合、SDKは以前に設定されたエンコードパラメータを自動的に使用します。推奨されるパラメータの設定は、次のとおりです。パラメータ項目 | パラメータ名 | 通常の推奨値 | テキスト教育シナリオ |
解像度 | videoResolution | 1280 × 720 | 1920 × 1080 |
フレームレート | videoFps | 10 FPS | 8 FPS |
最高ビットレート | videoBitrate | 1600 kbps | 2000 kbps |
解像度アダプティブ | enableAdjustRes | NO | NO |
TRTCVideoEncParam
とappGroup
を渡して''
にセットするだけです。TRTCVideoEncParam
パラメータはnullに設定することができます。この場合、SDKは画面共有が開始される前のエンコードパラメータを引き続き使用します。パラメータ項目 | パラメータ名 | 通常の推奨値 | テキスト教育シナリオ |
解像度 | videoResolution | 1280 × 720 | 1920 × 1080 |
フレームレート | videoFps | 10 FPS | 8 FPS |
最高ビットレート | videoBitrate | 1600 kbps | 2000 kbps |
解像度アダプティブ | enableAdjustRes | NO | NO |
├── Broadcast.Upload //スクリーンキャプチャのプロセスBroadcast Upload Extensionコードの詳細は手順2をご参照ください。│ ├── Broadcast.Upload.entitlements //プロセス間通信の設定に使用されるAppGroup情報│ ├── Broadcast.UploadDebug.entitlements //プロセス間通信の設定に使用されるAppGroup情報(debug環境)│ ├── Info.plist│ └── SampleHandler.swift // システムからのスクリーンキャプチャデータを受信するために使用されます├── Resource // リソースファイル├── Runner // TRTC簡易化Demo├── TXLiteAVSDK_ReplayKitExt.framework //TXLiteAVSDK_ReplayKitExt SDK
TXLiteAVSDK_ReplayKitExt.framework
をSDK圧縮パッケージに統合します。pubspec.yaml
ファイルを編集してreplay_kit_launcher
プラグインを導入し、TRTC Demo Screenのようにボタンをクリックすれば画面共有の呼び出しを実現します(オプション)。# trtc sdkとreplay_kit_launcherの導入dependencies:tencent_trtc_cloud: ^0.2.1replay_kit_launcher: ^0.2.0+1
Target名.entitlements
という名前のファイルが生成されます。このファイルを選択し、+記号をクリックして上記の手順のApp Groupを入力すればOKです。
import ReplayKitimport TXLiteAVSDK_ReplayKitExtlet APPGROUP = "group.com.tencent.comm.trtc.demo"class SampleHandler: RPBroadcastSampleHandler, TXReplayKitExtDelegate {let recordScreenKey = Notification.Name.init("TRTCRecordScreenKey")override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {// User has requested to start the broadcast. Setup info from the UI extension can be supplied but optional.TXReplayKitExt.sharedInstance().setup(withAppGroup: APPGROUP, delegate: self)}override func broadcastPaused() {// User has requested to pause the broadcast. Samples will stop being delivered.}override func broadcastResumed() {// User has requested to resume the broadcast. Samples delivery will resume.}override func broadcastFinished() {// User has requested to finish the broadcast.TXReplayKitExt.sharedInstance() .finishBroadcast()}func broadcastFinished(_ broadcast: TXReplayKitExt, reason: TXReplayKitExtReason) {var tip = ""switch reason {case TXReplayKitExtReason.requestedByMain:tip = 「画面共有は終了しました」breakcase TXReplayKitExtReason.disconnected:tip = 「アプリケーションは切断されました」breakcase TXReplayKitExtReason.versionMismatch:tip = 「統合エラー(SDKバージョン番号が一致しません)」breakdefault:break}let error = NSError(domain: NSStringFromClass(self.classForCoder), code: 0, userInfo: [NSLocalizedFailureReasonErrorKey:tip])finishBroadcastWithError(error)}override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {switch sampleBufferType {case RPSampleBufferType.video:// Handle video sample bufferTXReplayKitExt.sharedInstance() .sendVideoSampleBuffer(sampleBuffer)breakcase RPSampleBufferType.audioApp:// Handle audio sample buffer for app audiobreakcase RPSampleBufferType.audioMic:// Handle audio sample buffer for mic audiobreak@unknown default:// Handle other sample buffer typesfatalError("Unknown type of sample buffer")}}}
// 画面共有を開始するには、APPGROUPを上記の手順で作成したApp Groupに置き換える必要がありますtrtcCloud.startScreenCapture(TRTCVideoEncParam(videoFps: 10,videoResolution: TRTCCloudDef.TRTC_VIDEO_RESOLUTION_1280_720,videoBitrate: 1600,videoResolutionMode: TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_PORTRAIT,),iosAppGroup,);// 画面共有を停止しますawait trtcCloud.stopScreenCapture();// 画面共有の開始イベントの通知は、TRTCCloudListenerを介して受信できますonRtcListener(type, param){if (type == TRTCCloudListener.onScreenCaptureStarted) {//画面共有の開始}}
replay_kit_launcher
プラグインをご使用のプロジェクトに導入します。ReplayKitLauncher.launchReplayKitBroadcast(iosExtensionName);
関数を呼び出すと、画面共有機能を呼び出すことができます。// カスタムボタンによる応答メソッドonShareClick() async {if (Platform.isAndroid) {if (await SystemAlertWindow.requestPermissions) {MeetingTool.showOverlayWindow();}} else {//画面共有機能は実機でのみテストすることができますReplayKitLauncher.launchReplayKitBroadcast(iosExtensionName);}}
この記事はお役に立ちましたか?