Получить точную продолжительность видео

Я делаю плеер, и я хочу перечислить все файлы, и перед всеми файлами я хочу представить продолжительность видео.

единственная проблема заключается в том, что я не получаю правильную продолжительность видео, иногда он возвращает продолжительность совершенно неправильно.

Я пробовал следующее решение:

let asset = AVAsset(url: "video.mp4")

let duration = asset.duration.seconds

Так что это время, иногда дают значение, иногда другой. если кто-то знает возможное решение, я рад слышать.

Я Обновить код используя одно возможное решение, но оно не сработало хорошо,

let asset = AVAsset(url: url)

let duration = asset.duration

let durationTime = CMTimeGetSeconds(duration)

let minutes = Double(durationTime / 60)

Я пробовал с видео продолжительностью 11:47 минут, и он возвращает меня = 11: 78, как видео может иметь 11 минут и 78 секунд?

поэтому я думаю, что проблема с видео, и я выбрал другое видео 1: 16 минут, и снова возвращаемое значение 1: 26 (10 секунд неправильно)

1 ответов


это работает для меня:

import AVFoundation
import CoreMedia

...

    if let url = Bundle.main.url(forResource: "small", withExtension: "mp4") {
        let asset = AVAsset(url: url)

        let duration = asset.duration
        let durationTime = CMTimeGetSeconds(duration)

        print(durationTime)
    }

видео здесь он печатает "5.568", что является правильным.