Значение типа «CMSampleBuffer» не имеет члена «imageBuffer».

В настоящее время я работаю над проектом, который использует просмотр камеры в реальном времени в Swift. Я использовал некоторый код, который нашел на GitHub, чтобы получить изображение с камеры в реальном времени, и он отлично работает на моем MacBook Pro с Mojave. Все мои файлы хранятся на внешнем жестком диске, поэтому я перешел к своему iMac и начал работать над проектом там. Я думаю, что у меня есть две разные версии бета-версии Xcode 10, что может быть частью проблемы? В основном эта строка отлично работает на моем MacBook, но не на этом iMac, который, кстати, работает под управлением macOS high Sierra версии 15:

guard let pixelBuffer : CVPixelBuffer = sampleBuffer.imageBuffer else { return }

Это дает мне следующую ошибку:

Value of type 'CMSampleBuffer' has no member 'imageBuffer'

Но при открытии того же проекта на моем макбуке это работает без проблем. Может ли это быть версия Xcode или это потому, что я использую две разные версии macOS?


person Thijs van der Heijden    schedule 06.07.2018    source источник
comment
В iOS нет свойства imageBuffer ни в одном классе. Откуда вы это берете? Должно быть вашим собственным или сторонним расширением.   -  person rmaddy    schedule 06.07.2018
comment
Привет, на самом деле, когда я перехожу к определению imageBuffer, я оказываюсь в файле coreMedia для CMSampleBuffer со следующим кодом: @available(iOS 4.0, *) public var imageBuffer: CVImageBuffer? { get } Но на моем iMac, на котором установлена ​​более старая версия macOS, но более новая версия бета-версии xcode 10 , нет определения для imageBuffer?   -  person Thijs van der Heijden    schedule 07.07.2018
comment
Единственные ссылки на imageBuffer, которые я вижу, это как параметры для нескольких функций.   -  person rmaddy    schedule 07.07.2018


Ответы (2)


Вы все еще можете использовать эту функцию:

CMSampleBufferGetImageBuffer(_ sbuf: CMSampleBuffer), чтобы получить CVPixelBuffer?.

Прямая замена будет:

guard let pixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }
person kuhncj    schedule 18.07.2018

У меня такая же проблема с кодовой базой, которая работала на одном MacBook, но не на другом. Рабочий MacBook находится в Apple для ремонта, поэтому я не могу проверить версии, хотя я знаю, что мой рабочий код использует CMSampleBufferGetImageBuffer. В моей резервной копии говорится, что это было заменено CMSampleBuffer.imageBuffer в Swift 4.2, которого не существует. Он использует Mojave, Xcode 10 beta 3 и ios12.

person Wozzer    schedule 08.07.2018