AVAssetImageGenerator дает изображение далеко от желаемого времени

Я пытаюсь разделить видео на несколько фотографий, но когда я использую AVAssetImageGenerator, я могу получить фотографию только для 0,0 с, 0,5 с, 0,1 с и т. д.

Но как я могу получить, например. 10 фото в секунду?

let imageGenerator = AVAssetImageGenerator(asset: asset)
        imageGenerator.appliesPreferredTrackTransform = true

        var times = [NSValue]()
        for i in 0..<5 {
            let t = Double(i) / 5 * 60
            times.append(NSValue(time: CMTimeMake(Int64(t), 60)))
        }

        imageGenerator.generateCGImagesAsynchronously(forTimes: times) { (time, imageRef, time2, result, error) in

Результирующее время кадра

time time2
0.0 0.0
0.2 0.0
0.4 0.5005
0.6 0.5005
0.8 1.001

person Андрей Первушин    schedule 12.04.2018    source источник
comment
для меня ваш код работает так, как ожидалось. Можете ли вы предоставить тестовое видео?   -  person Jabson    schedule 12.04.2018


Ответы (1)


Это исправлено

imageGenerator.requestedTimeToleranceAfter = CMTimeMake(1, 60)
imageGenerator.requestedTimeToleranceBefore = CMTimeMake(1, 60)
person Андрей Первушин    schedule 16.04.2018