Недопустимые байты данных / строка:CGBitmapContextCreate: CGContextDrawImage: неверный контекст 0x0
Я пытаюсь преобразовать массив изображений в видео файл. В процессе я должен заполнить пиксельный буфер из выбранных изображений. Вот фрагмент кода:
CVPixelBufferLockBaseAddress(pixelBuffer, 0)
let pixelData = CVPixelBufferGetBaseAddress(pixelBuffer)
let bitmapInfo:CGBitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
print("\npixel buffer width: \(CVPixelBufferGetWidth(pixelBuffer))\n")
print("\nbytes per row: \(CVPixelBufferGetBytesPerRow(pixelBuffer))\n")
let context = CGBitmapContextCreate(
pixelData,
Int(image.size.width),
Int(image.size.height),
CGImageGetBitsPerComponent(image.CGImage),
CVPixelBufferGetBytesPerRow(pixelBuffer),
rgbColorSpace,
bitmapInfo.rawValue
)
CGContextDrawImage(context, CGRectMake(0, 0, image.size.width, image.size.height), image.CGImage)
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0)
После выполнения этих строк я получаю следующее сообщение в xcode:CGBitmapContextCreate: недопустимые байты / строка данных: должно быть не менее 13056 для 8 целочисленных битов / компонента, 3 компонентов, kCGImageAlphaPremultipliedFirst.CGContextDrawImage: неверный контекст 0x0. После отладки получаю следующее значение:
CVPixelBufferGetWidth(pixelBuffer) // value 480
CVPixelBufferGetBytesPerRow(pixelBuffer) // value 1920
Что я должен сделать, чтобы получить действительные байты / строку данных? Какие 3 компонента указаны в журнале консоли? Я видел похожие вопросы в stackru, но ничего не помогло в моем случае.