获取视频的准确持续时间

时间:2017-05-30 16:04:46

标签: swift avfoundation avasset

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

唯一的问题是我没有获得正确的视频时长,有时它会导致完全错误的持续时间。

我尝试过以下解决方案:

")]}',\n"

因此,时间有时会给出另一个值。 如果有人知道可能的解决方案,我很高兴听到。

我使用一种可能的解决方案更新了代码,但效果不佳,

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

let duration = asset.duration.seconds

我尝试过持续时间为11:47分钟的视频,然后返回给我= 11:78,视频怎么能有11分78秒呢?

所以我认为问题在于视频,我选择了另一个1:16分钟的视频,然后返回的值是1:26(错误10秒)

2 个答案:

答案 0 :(得分:17)

这对我有用:

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)
    }

对于视频here,它会打印" 5.568"这是正确的。

答案 1 :(得分:1)

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)
    }