Как транслировать экран без Broadcast Extension в iOS - PullRequest
0 голосов
/ 29 августа 2018

Я хочу, чтобы мое приложение транслировалось с помощью twitch, youtube или другого потокового сервиса без какого-либо другого приложения, такого как толпа мобов.

Согласно Apple, с помощью Broadcast Extension я могу транслировать экран своего приложения. Расширение Broadcast предоставило видеоданные как тип CMSampleBuffer. Затем я должен отправить эти данные в RTMP-сервер, как YouTube, дергаться или т. Д.

Я думаю, что если я смогу получить видеоданные, я смогу транслировать другие вещи без использования Broadcast Extension в моем приложении. Поэтому я пытаюсь отправить данные RPScreenRecorder на сервер rtmp, но у меня ничего не получается.

Вот код, который я написал. Я использую HaishinKit с открытым исходным кодом для связи RTMP. (https://github.com/shogo4405/HaishinKit.swift/tree/master/Examples/iOS/Screencast)

    let rpScreenRecorder : RPScreenRecorder = RPScreenRecorder.shared()
    private var broadcaster: RTMPBroadcaster = RTMPBroadcaster()

    rpScreenRecorder.startCapture(handler: { (cmSampleBuffer, rpSampleBufferType, error) in
        if (error != nil) {
            print("Error is occured \(error.debugDescription)")
        } else {

            if let description: CMVideoFormatDescription = CMSampleBufferGetFormatDescription(cmSampleBuffer) {
                let dimensions: CMVideoDimensions = CMVideoFormatDescriptionGetDimensions(description)
                self.broadcaster.stream.videoSettings = [
                    "width": dimensions.width,
                    "height": dimensions.height ,
                    "profileLevel": kVTProfileLevel_H264_Baseline_AutoLevel
                ]
            }
            self.broadcaster.appendSampleBuffer(cmSampleBuffer, withType: .video)

        }
    }) { (error) in
        if ( error != nil) {
            print ( "Error occured \(error.debugDescription)")
        } else {
            print ("Success")
        }
    }
}

Если у вас есть решение, пожалуйста, ответьте мне:)

...