какие методы SampleBuffer я должен использовать для измерения частоты кадров?

Я работаю с AvFoundation. Мне нужно точно измерить частоту кадров с камеры ios.

Алгоритм:

Частота кадров = 1/(time(f2)-time(f1)) = __ (кадров в секунду);

Где время(f2) – время второго кадра, а (f1) – время первого кадра. Как это сделать с помощью sampleBuffer?


person Andrew Kachalin    schedule 26.05.2016    source источник


Ответы (1)


Вам нужно позвонить CMSampleBufferGetPresentationTimeStamp(sampleBuffer)

Что-то вроде этого (быстро, немного неудобно, потому что я не мог найти CMTime 1/x):

let delta = CMTimeSubtract(CMSampleBufferGetPresentationTimeStamp(buf2), CMSampleBufferGetPresentationTimeStamp(buf1))

// awkward 1/x, beware that delta.value may overflow as a timescale
// what's the right way?
let frameRate = CMTime(value: CMTimeValue(delta.timescale), timescale: CMTimeScale(delta.value))

// maybe you want floating point instead of CMTime:
let frameRateAsFloat64 = CMTimeGetSeconds(frameRate)
person Rhythmic Fistman    schedule 30.05.2016