我想将我的应用程序流式传输到 twitch、youtube 或这样的流媒体服务,而不需要任何其他应用程序,例如 mobcrush。
根据 Apple 的说法,通过使用广播扩展,我可以流式传输我的应用程序屏幕。Broadcast Extension 将视频数据作为 CMSampleBuffer 的一种类型。然后我应该将该数据发送到 rtmp 服务器,如 youtube、twitch 等。
我想如果我可以获得视频数据,我可以在我的应用程序中不使用广播扩展来流式传输其他内容。所以我尝试将 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")
}
}
}
如果您有任何解决方案,请回答我:)