我正在使用Replay Kit 2(广播上传扩展程序)在我的应用程序中进行屏幕共享。
它在iPhone上正常工作,但几秒钟后出现错误,因为当我在iPAD上运行它超过50 MB的内存限制时。
问题是由于iPAD的分辨率高。由于服务器端的限制,我还必须使用vp8,所以不能使用H264。
在将CMSampleBuffer发送到服务器之前,我曾尝试将其分辨率最小化,但是内存仍然以相同的速度增加并停止。
func didCapture(_ sampleBuffer: CMSampleBuffer){
if CMSampleBufferGetNumSamples(sampleBuffer) != 1 ||
!CMSampleBufferIsValid(sampleBuffer) ||
!CMSampleBufferDataIsReady(sampleBuffer) {
return
}
let rtcPixelBuffer = RTCCVPixelBuffer(pixelBuffer: pixelBuffer)
rtcPixelBuffer.toI420()
// let value = rtcPixelBuffer.cropAndScale(to: CVPixelBuffer, withTempBuffer: <#T##UnsafeMutablePointer<UInt8>#>)
let timeStampNs = Int64(CMTimeGetSeconds(CMSampleBufferGetPresentationTimeStamp(sampleBuffer)) * Double(NSEC_PER_SEC))
let videoFrame = RTCVideoFrame(buffer: rtcPixelBuffer , rotation: ._0, timeStampNs: timeStampNs)
delegate?.capturer(self, didCapture: videoFrame)
}