iOS | Android | Mac OS | Windows | Electron | Chromeブラウザ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
TRTCVideoEncParam
を渡すだけでOKです。このパラメータはnilに設定することができます。この場合、SDKは画面共有が開始される前のエンコードパラメータを引き続き使用します。パラメータ項目 | パラメータ名 | 通常の推奨値 | テキスト教育シナリオ |
解像度 | videoResolution | 1280 × 720 | 1920 × 1080 |
フレームレート | videoFps | 10 FPS | 8 FPS |
最高ビットレート | videoBitrate | 1600 kbps | 2000 kbps |
解像度アダプティブ | enableAdjustRes | NO | NO |
TXLiteAVSDK_ReplayKitExt.framework
を統合します。Target名.entitlements
という名前のファイルが生成されます。このファイルを選択し、+記号をクリックして上記の手順のApp Groupを入力してください。
#import "SampleHandler.h"@import TXLiteAVSDK_ReplayKitExt;#define APPGROUP @"group.com.tencent.liteav.RPLiveStreamShare"@interface SampleHandler() <TXReplayKitExtDelegate>@end@implementation SampleHandler// 注意:ここでのAPPGROUPは、先ほど作成したApp Group Identifierに変更してください。- (void)broadcastStartedWithSetupInfo:(NSDictionary<NSString *,NSObject *> *)setupInfo {[[TXReplayKitExt sharedInstance] setupWithAppGroup:APPGROUP delegate:self];}- (void)broadcastPaused {// User has requested to pause the broadcast. Samples will stop being delivered.}- (void)broadcastResumed {// User has requested to resume the broadcast. Samples delivery will resume.}- (void)broadcastFinished {[[TXReplayKitExt sharedInstance] finishBroadcast];// User has requested to finish the broadcast.}#pragma mark - TXReplayKitExtDelegate- (void)broadcastFinished:(TXReplayKitExt *)broadcast reason:(TXReplayKitExtReason)reason{NSString *tip = @"";switch (reason) {case TXReplayKitExtReasonRequestedByMain:tip = @"画面共有は終了しました";break;case TXReplayKitExtReasonDisconnected:tip = @"アプリケーションは切断されました";break;case TXReplayKitExtReasonVersionMismatch:tip = @"統合エラー(SDKバージョン番号が一致しません)";break;}NSError *error = [NSError errorWithDomain:NSStringFromClass(self.class)code:0userInfo:@{NSLocalizedFailureReasonErrorKey:tip}];[self finishBroadcastWithError:error];}- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType {switch (sampleBufferType) {case RPSampleBufferTypeVideo:[[TXReplayKitExt sharedInstance] sendVideoSampleBuffer:sampleBuffer];break;case RPSampleBufferTypeAudioApp:// Handle audio sample buffer for app audiobreak;case RPSampleBufferTypeAudioMic:// Handle audio sample buffer for mic audiobreak;default:break;}}@end
// 画面共有を開始するには、APPGROUPを上記の手順で作成したApp Group Identifierに置き換えてください。- (void)startScreenCapture {TRTCVideoEncParam *videoEncConfig = [[TRTCVideoEncParam alloc] init];videoEncConfig.videoResolution = TRTCVideoResolution_1280_720;videoEncConfig.videoFps = 10;videoEncConfig.videoBitrate = 2000;//APPGROUPを上記の手順で作成したApp Group Identifierに置き換えてください。[[TRTCCloud sharedInstance] startScreenCaptureByReplaykit:videoEncConfigappGroup:APPGROUP];}// 画面共有を停止します- (void)stopScreenCapture {[[TRTCCloud sharedInstance] stopScreenCapture];}// 画面共有の開始イベントの通知は、TRTCCloudDelegateを介して受信できます- (void)onScreenCaptureStarted {[self showTip:@"画面共有の開始"];}
TRTCBroadcastExtensionLauncher
のlaunch
関数を呼び出すと、画面共有機能を呼び出すことができます。// カスタムボタンによる応答メソッド- (IBAction)onScreenButtonTapped:(id)sender {[TRTCBroadcastExtensionLauncher launch];}
RPSystemBroadcastPickerView
を追加しました。これによって、ユーザーがアプリケーションからランチャーをポップアップして、画面共有の開始を確認することができます。現時点では、RPSystemBroadcastPickerView
はインターフェースのカスタマイズをサポートしておらず、公式の呼び出しメソッドもありません。RPSystemBroadcastPickerView
のサブViewをスキャンしてUIButtonを見つけ、そのクリックイベントをトリガーするというものです。
-ただし、このソリューションはAppleで公式に推奨されているものではなく、システムが新たにアップデートされた場合、無効になる可能性があります。従って、手順4はオプションのソリューションにすぎず、お客様の自己責任でこのソリューションをご利用ください。
この記事はお役に立ちましたか?