屏幕共享由于iPAD中的(空)而停止

时间:2019-05-21 18:16:43

标签: ios swift memory-management replaykit cmsamplebuffer

我正在使用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)

}

0 个答案:

没有答案