Я создаю экземпляр AVPlayerItemVideoOutput следующим образом:
let videoOutput = AVPlayerItemVideoOutput(pixelBufferAttributes: [String(kCVPixelBufferPixelFormatTypeKey): NSNumber(value: kCVPixelFormatType_32BGRA)])
И извлекаю pixelBuffers следующим образом:
@objc func displayLinkDidRefresh(link: CADisplayLink) {
let itemTime = videoOutput.itemTime(forHostTime: CACurrentMediaTime())
if videoOutput.hasNewPixelBuffer(forItemTime: itemTime) {
if let pixelBuffer = videoOutput.copyPixelBuffer(forItemTime: itemTime, itemTimeForDisplay: nil) {
}
}
}
Но по какой-то причине CVPixelBufferGetHeight(pixelBuffer)
или Width.всегда возвращайте 1280x720, когда видео было снято, когда камера iPhone (альбомная или книжная) всегда высотой = 1280 шириной = 720.ДАЖЕ, если видео 4к.Если я загружаю квадратное видео из Instagram или любое другое видео, загруженное из Интернета (не созданное напрямую с помощью приложения камеры), ширина и высота будут правильно напечатаны, если разрешение меньше 720p.Но другое разрешение, например.1008x1792 будет выдавать CVPixelBufferGetHeight (pixelBuffer) = 1280
Видео, снятые на камеру ... оно всегда выдает меньшее разрешение.Я попробовал 4k и 1080 настроек (вы можете изменить это в iOS Settings> Camera).все же .. даже в 1080 я получаю буферы 1280x720 пикселей.