使用 webrtc 时 ReplayKit 不起作用

Posted

技术标签:

【中文标题】使用 webrtc 时 ReplayKit 不起作用【英文标题】:ReplayKit doesn't work when work with webrtc 【发布时间】:2017-08-28 12:42:44 【问题描述】:

我使用 WebRtc 创建点对点连接来共享视频和音频。我想使用 replaykit 录制屏幕和麦克风。如果我在建立对等连接后开始录制,这意味着两者可以相互共享视频和音频。在这种情况下,repalykit 无法录制屏幕和麦克风,并且 previewController 是黑色的.如果我在建立连接之前开始录制 replaykit 效果很好。如果我只选择录制屏幕或不添加RTCAudioTrack,它一直有效。 那么如何在 webrtc 中使用 replaykit? 你可以用apprtc-ios开始测试

【问题讨论】:

你找到解决办法了吗,请分享 【参考方案1】:

通话开始后,设备扬声器、麦克风和摄像头流将添加到 Peer 连接,并且无法用于应用中的其他输出。遵循 iOS 11 中引入的新 API。

/*! @abstract Starts screen and audio capture and continually calls the 
supplied handler with the current sampleBuffer and bufferType and passed it 
back to the application. Note that before recording actually starts, the 
user may be prompted with UI to confirm recording.
@result handler Called continually with sampleBuffers and the bufferType. 
Will be passed an optional NSError in the RPRecordingErrorDomain domain if 
there was an issue starting the capture.
*/

- (void)startCaptureWithHandler:(nullable void(^)(CMSampleBufferRef 
sampleBuffer, RPSampleBufferType bufferType, NSError * _Nullable 
error))captureHandler completionHandler:(nullable void(^)(NSError * 
_Nullable error))completionHandler API_AVAILABLE(ios(11.0), tvos(11.0));

此 API 用于捕获扬声器、麦克风和视频样本缓冲区,您可以使用 AVFoundation 的 AVAssetWriter 将它们写入文件。

【讨论】:

以上是关于使用 webrtc 时 ReplayKit 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

使用 ReplayKit 广播时将 CMSampleBuffer 转换为 .mov

当我的 iOS 应用程序在后台使用 ReplayKit 时进行屏幕录制

(webrtc) setRemoteDescription 对发起者不起作用

ReplayKit2采用端口转发数据时不能终止的问题

WebRTC 连接在本地网络之外不起作用