Реализация расширения широковещательной загрузки с помощью SampleHandler.swift и вызов его с помощью BroadcastPicker работает нормально. Однако, пытаясь выяснить, как обрабатывать сэмплы, поступающие в processSampleBuffer, трасса остывает. Кто-нибудь знает, как загрузить семплы на потоковый сервер?
В двух словах: как преобразовать семплы данных (CMSampleBuffer) в стандартный формат для аудио и видео, готовые для отправки на сервер?
Яблоки Код WWDC предлагает
// session: add frame
let imageBuffer:CVImageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!
let pts:CMTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer) as CMTime
VTCompressionSessionEncodeFrame(session!, imageBuffer: imageBuffer, presentationTimeStamp: pts, duration: CMTime.invalid, frameProperties: nil, sourceFrameRefcon: nil, infoFlagsOut: nil)
в processSampleBuffer, но фактическая загрузка кадров видео и аудио сэмплов не упоминается.
override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
switch sampleBufferType {
case RPSampleBufferType.video:
// Handle video sample buffer
// What now?
break
case RPSampleBufferType.audioApp:
// Handle audio sample buffer for app audio
// What now?
break
case RPSampleBufferType.audioMic:
// Handle audio sample buffer for mic audio
// What now?
break
@unknown default:
// Handle other sample buffer types
fatalError("Unknown type of sample buffer")
}
}
Любая помощь будет принята с благодарностью.