Swift 获取视频的准确持续时间

Swift 获取视频的准确持续时间,swift,avfoundation,avasset,Swift,Avfoundation,Avasset,我正在制作一个播放器,我想列出所有文件,并在所有文件前面显示视频的持续时间 唯一的问题是我没有得到正确的视频持续时间,有时它返回的持续时间完全错误 我尝试了以下解决方案: let asset = AVAsset(url: "video.mp4") let duration = asset.duration.seconds 因此,时间有时给出一个值,有时给出另一个值。 如果有人知道一个可能的解决办法,我很高兴听到 我用一种可能的解决方案更新了代码,但效果不好 let asset = AVAss

我正在制作一个播放器,我想列出所有文件,并在所有文件前面显示视频的持续时间

唯一的问题是我没有得到正确的视频持续时间,有时它返回的持续时间完全错误

我尝试了以下解决方案:

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秒错误)

这对我很有用:

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”,这是正确的

根据评论编辑:


当除以
60秒/分钟时返回
707
秒的视频是
11.78
。这是11.78分钟,或11分钟,并且
0.78分钟*60秒/min=47秒
,总计是
11分钟47秒

我已经试过了,时间保持疯狂值@Eric AyaHey man,我复制了一个粘贴的代码,不要更改一行,对于11分钟的视频,de duration是givin 707,所以我将707除以60,它返回11.78,有点不对劲。你的回答很好,但不能解决我的问题,我会继续努力。THXS如果视频长度为11分47秒,则707是正确的。707秒是11.78分钟。但是正确的时间是11:47,我怎么才能得到这个(11:47),我不知道我是不明白还是遗漏了什么,你能解释一下@davidshaw你似乎不明白时间转换。707秒是11.78分钟。0.78分钟不是78秒。0.78min*60sec/min=47秒大卫,我太笨了,现在我明白了当707除以60时,它给出11分钟,剩下的是秒,所以通过使用余数,你可以得到视频的剩余秒数,如707%60。
if let url = Bundle.main.url(forResource: "small", withExtension: "mp4") {
        let asset = AVAsset(url: url)

        let duration = asset.duration
        let durationTime = CMTimeGetSeconds(duration)
        let minutes = durationTime/60
        let seconds = durationTime%60
        let videoDuration = "\(minutes):\(seconds)"
        print(videoDuration)
    }