Недопустимые байты данных / строка: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, но ничего не помогло в моем случае.

0 ответов

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