Совместное использование экрана с webrt c в iOS swift - PullRequest
0 голосов
/ 23 апреля 2020

Я реализовал совместное использование экрана с потоковой передачей webrt c. Я использовал RPKit для совместного использования экрана. Совместное использование экрана работает в мобильном телефоне iPhone11, но тот же код не работает в мобильном телефоне iPhone6s. оба телефона имели одинаковую версию iOS (iOS 13.4). Я хочу показать это на каждом устройстве iOS. Пожалуйста помоги мне с этим. пожалуйста, используйте следующий код:

 func startScreenShare() {
    let screenSharefactory = self.connectionFactory
    let screenShare_Stream = screenSharefactory.mediaStream(withStreamId :  "videostream")
    let videoCapturer = RTCVideoCapturer()
    let videoSource :  RTCVideoSource = screenSharefactory.videoSource()
    self.captureController?.stopCapture()
    self.peerConnection?.remove(stream)


    RPScreenRecorder.shared().startCapture(handler: { (cmSampleBuffer, rpSampleType, error) in



        switch rpSampleType {



        case RPSampleBufferType.video:

            // create the CVPixelBuffer

            guard let pixelBuffer: CVImageBuffer = CMSampleBufferGetImageBuffer(cmSampleBuffer) else {

                break

            }



            let rtcpixelBuffer = RTCCVPixelBuffer(pixelBuffer: pixelBuffer)



            let timeStampNs: Int64 = Int64(CMTimeGetSeconds(CMSampleBufferGetPresentationTimeStamp(cmSampleBuffer)) * 1000000000)



            let videoFrame =  RTCVideoFrame(buffer: rtcpixelBuffer, rotation: RTCVideoRotation._0, timeStampNs: timeStampNs)

            videoSource.capturer(videoCapturer, didCapture: videoFrame)



            let screenShare_VideoTrack = screenSharefactory.videoTrack(with :  videoSource, trackId :  "videotrack")

            screenShare_VideoTrack.isEnabled = true

            screenShare_Stream.addVideoTrack(screenShare_VideoTrack)



        case RPSampleBufferType.audioApp:

            break

        case RPSampleBufferType.audioMic:

            //                let audioTrack = screenSharefactory.audioTrack(withTrackId :  String.random())

            //                audioTrack.isEnabled = true

            //                screenShare_Stream.addAudioTrack(audioTrack)

            break

        default:

            print("sample has no matching type")

        }



        if self.peerConnection != nil

        {

            self.peerConnection?.add(screenShare_Stream)

        }



    })

}
...