Live Camera Preview слишком медленное в Ricoh Theta Camera
Я пытался обернуть голову вокруг этого http потокового вещания. Я просто не понимаю, и да, я прочитал много яблочных документов и смотрел видео WWDC, но все еще очень запутался.
Я хочу реализовать предварительный просмотр на 360 градусов, чтобы сделать снимок и сохранить его в облаке с помощью камеры Ricoh Theta V. Я уже выполнил реализацию с использованием Open Spherical Camera API для показа изображений на 360 градусов. Но мой предварительный просмотр слишком медленный. Когда я переместил камеру, он слишком поздно обновляет кадры.
Ниже мой код LivePreviewClass-
let completionHandler: ((Data?, URLResponse?, Error?) -> Void)
var dataBuffer = Data()
init(completionHandler: @escaping ((Data?, URLResponse?, Error?) -> Void)) {
self.completionHandler = completionHandler
}
@objc func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
dataBuffer.append(data)
repeat {
var soi: NSInteger?
var eoi: NSInteger?
var i : NSInteger = 0
dataBuffer.withUnsafeBytes { (bytes: UnsafeRawBufferPointer) -> 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
}
@objc func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
session.invalidateAndCancel()
self.completionHandler(nil, nil, error)
}