Получить кадр изображения из данных видеопотока, чтобы показать его в UIImageView

Я работаю над одним приложением, где я получаю видео поток с камеры 360 градусов. Я работаю с двумя 360-градусными камерами (то есть Ricoh theta и Aleta S2C). для ricoh theta я могу получить доступ к данным кадра изображения из потокового видео в реальном времени, но в случае с Aleta это не работает. он застрял на первом кадре.

Формат для потокового видео следующий:

"Content-Type: multipart/x-mixed-replace; boundary="---osclivepreview---""

Ссылка:

https://developers.google.com/streetview/open-spherical-camera/reference/camera/getlivepreview

Я использую следующий код для извлечения кадра из потоковой передачи данных:

let JPEG_SOI: [UInt8] = [0xFF, 0xD8]
let JPEG_EOI: [UInt8] = [0xFF, 0xD9]

let completionHandler: ((Data?, URLResponse?, Error?) -> Void)
var dataBuffer = Data()

 func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
    dataBuffer.append(data)

    repeat {
        var soi: Int?
        var eoi: Int?
        var i = 0

        dataBuffer.withUnsafeBytes { (bytes: UnsafePointer<UInt8>) -> Void in
            while i < dataBuffer.count - 1 {
                if JPEG_SOI[0] == bytes[i] && JPEG_SOI[1] == bytes[i + 1] {
                    soi = i
                    i += 1
                    break
                }
                i += 1
            }

            while i < dataBuffer.count - 1 {
                if JPEG_EOI[0] == bytes[i] && JPEG_EOI[1] == bytes[i + 1] {
                    i += 1
                    eoi = i
                    break
                }
                i += 1
            }

        }

        guard let start = soi, let end = eoi else {
            return
        }

        let frameData = dataBuffer.subdata(in: start..<(end + 1))
        self.completionHandler(frameData, nil, nil)
        dataBuffer = dataBuffer.subdata(in: (end + 1)..<dataBuffer.count)
    } while dataBuffer.count >= 4
}

Пожалуйста, помогите, если вы сделали извлечение кадров из видео данных.

0 ответов

Другие вопросы по тегам