Мы хотели бы использовать WebRTC для отправки снимка экрана устройств iOS с помощью ReplayKit.
ReplayKit имеет обратный вызов processSampleBuffer, который выдает CMSampleBuffer.
Но вот где мы застряли, мы, похоже, не можем получить CMSampleBuffer для отправки на подключенный узел.
Мы попытались создать pixelBuffer из sampleBuffer, а затем создать RTCVideoFrame.
мы также извлекли RTCVideoSource из RTCPeerConnectionFactory, а затем использовали RTCVideoCapturer и направили его в localVideoSource.
Есть идеи, что мы делаем не так?
var peerConnectionFactory: RTCPeerConnectionFactory?
override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
switch sampleBufferType {
case RPSampleBufferType.video:
// create the CVPixelBuffer
let pixelBuffer:CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!;
// create the RTCVideoFrame
var videoFrame:RTCVideoFrame?;
let timestamp = NSDate().timeIntervalSince1970 * 1000
videoFrame = RTCVideoFrame(pixelBuffer: pixelBuffer, rotation: RTCVideoRotation._0, timeStampNs: Int64(timestamp))
// connect the video frames to the WebRTC
let localVideoSource = self.peerConnectionFactory!.videoSource()
let videoCapturer = RTCVideoCapturer()
localVideoSource.capturer(videoCapturer, didCapture: videoFrame!)
let videoTrack : RTCVideoTrack = self.peerConnectionFactory!.videoTrack(with: localVideoSource, trackId: "100”)
let mediaStream: RTCMediaStream = (self.peerConnectionFactory?.mediaStream(withStreamId: “1"))!
mediaStream.addVideoTrack(videoTrack)
self.newPeerConnection!.add(mediaStream)
break
}
}