2

ReplayKit を使用して、アプリ内でライブ ブロードキャストを作成しようとしています。基本的には自分の画面を共有して相手の画面を見たい。

バッファを取得するために、ReplayKit は次の関数を提供します。

func startCapture(handler captureHandler: ((CMSampleBuffer, RPSampleBufferType, Error?) -> Void)?, completionHandler: ((Error?) -> Void)? = nil)

これは、ReplayKit を起動してバッファを取得する私の方法です。

private func startRecording() {
    RPScreenRecorder.shared().startCapture(handler: { (sampleBuffer, bufferType, error) in
        switch bufferType {

        case RPSampleBufferType.video:
            // Handle buffer and send it to server
            break

        case RPSampleBufferType.audioApp:
            break
        case RPSampleBufferType.audioMic:
            break
        }

    }, completionHandler: nil)
}

これは完全に機能しますが、次の問題に直面しています。ボタンが点滅するなど、画面が絶えず変化する場合、アプリをバックグラウンドに送信して何度か戻ってくると、ReplayKit はそのキャプチャ ハンドラーの呼び出しを停止します。

おそらく問題は、この機能startCaptureがライブブロードキャスト用ではなく、限られた時間だけ画面を記録するように作成されていることです.

私が抱えている問題を示すボタンが点滅する例を Github で作成しました。ReplayKit は、繰り返しバックグラウンドに移行するまで正常に実行されます。その後、停止し、再び機能させる唯一の方法は、デバイスを再起動することです。

4

0 に答える 0