Как получить метку времени CMSampleBuffer в Swift 4 - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь получить метку времени каждого захваченного кадра, но теряюсь в документах Apple Dev.Для захвата кадров я использую AVFoundation framework.

Конечная цель - получить массив изображений, а затем выбрать одно из них на основе метки времени, захваченной где-то еще

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {

    // now I would like to know when sampleBuffer was created
    let sessionAtSourceTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer)

    let frameTimeMillisecs = CMTimeGetSeconds(sessionAtSourceTime) * 1000; // I am not sure what this value represents

     print("sessionAt \(sessionAtSourceTime)")
     let decodeTime = CMSampleBufferGetDecodeTimeStamp(sampleBuffer)// always all values set to 0
     print("decodeTime \(decodeTime)")
     let decodeOutputTime = CMSampleBufferGetOutputDecodeTimeStamp(sampleBuffer) // always all values set to 0
     print("decodeOutputTime \(decodeOutputTime)")

    // more stuff here such as converting buffer to image and then append to an array, don't think that are relevant for this question
}

Я не уверен, как отсюда двигаться.Я думал, что могу просто создать новый Date объект в методе captureOutput, но я не уверен, что это будет достаточно точно.

У кого-нибудь есть идеи, как этого добиться?Я посмотрел на эту страницу , но опять же я не уверен, какое значение я получу обратно.

...