Расширение широковещательной загрузки - PullRequest
1 голос
/ 01 ноября 2019

Реализация расширения широковещательной загрузки с помощью 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")
    }

}

Любая помощь будет принята с благодарностью.

...