2015-04-01 6 views
1

Я пытаюсь получить размер CMSampleBufferRef от AVFoundation обратного вызоваБуфер CMSampleBufferRef

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection 

Согласно документации https://developer.apple.com/library/mac/documentation/CoreMedia/Reference/CMSampleBuffer/index.html#//apple_ref/c/func/CMSampleBufferGetSampleSize

size_t CMSampleBufferGetTotalSampleSize (CMSampleBufferRef sbuf); 

Если я правильно понимаю, я должен использовать этот метод для получения размера буфера. Но У меня всегда было 0 с момента возвращения. и сказано, что «Если в этом CMSampleBuffer нет размеров выборки, будет возвращен размер 0». В этом случае мне интересно, не поддерживает ли структура AVFoundation информацию о размере буфера или я неправильно понимаю документ.

Следить за вопрос: Кстати, интересно, в этом случае, если я мог бы использовать

CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer (sampleBuffer);

от pixelBuffer, чтобы получить размер sampleBuffer?

+0

Вы нашли решение на этом? –

ответ

0

Как вы создаете свой AVCaptureSession?

В основном CMSampleBuffer может содержать несколько информации.

  • Raw буфер изображения (который можно извлечь с помощью CMSampleBufferGetImageBuffer)
  • аудио буфера (который вы должны извлечь с помощью CMSampleBufferGetBlockBuffer)
  • CoreVideo кодируются буфер данных изображения (также извлечь с помощью CMSampleBufferGetBlockBuffer)

Для того, чтобы узнать, подходит ли вам captureoutput, а если хотите, и вы ожидаете изображения, тогда вы должны получить изображение как CVPixelBufferRef, затем проверьте размер данных на изображении usi ng CVPixelBufferGetDataSize

Смежные вопросы