获取视频的准确持续时间

Mr.*_*mes 11 avfoundation avasset swift

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

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

我尝试过以下解决方案:

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

let duration = asset.duration.seconds
Run Code Online (Sandbox Code Playgroud)

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

我已经使用一种可能的解决方案更新了代码但是它运行不正常,

let asset = AVAsset(url: url)

let duration = asset.duration

let durationTime = CMTimeGetSeconds(duration)

let minutes = Double(durationTime / 60)
Run Code Online (Sandbox Code Playgroud)

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

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

Dav*_* S. 23

这对我有用:

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)
    }
Run Code Online (Sandbox Code Playgroud)

对于这里的视频,它打印"5.568",这是正确的.

  • 你似乎不理解时间转换.707秒是11.78分钟.0.78分钟不是78秒.0.78分钟*60秒/分钟= 47秒 (8认同)
  • 大卫,我太傻了,现在我明白了 (3认同)
  • 如果视频长度为11分47秒,那么707就是正确的.707秒是11.78分钟. (2认同)