首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取视频的准确时长

获取视频的准确时长
EN

Stack Overflow用户
提问于 2017-05-31 00:04:46
回答 2查看 14.3K关注 0票数 22

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

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

我已经尝试了以下解决方案:

代码语言:javascript
运行
复制
let asset = AVAsset(url: "video.mp4")

let duration = asset.duration.seconds

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

我已经使用一种可能的解决方案更新了代码,但它不能很好地工作,

代码语言:javascript
运行
复制
let asset = AVAsset(url: url)

let duration = asset.duration

let durationTime = CMTimeGetSeconds(duration)

let minutes = Double(durationTime / 60)

我尝试了一个时长为11:47分钟的视频,结果返回me = 11: 78,视频怎么会有11分78秒?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-31 01:14:00

这对我来说很有效:

代码语言:javascript
运行
复制
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“,这是正确的。

根据注释进行编辑:

如果视频除以60 sec/min时返回707秒,则为11.78。这是11.78分钟,或者11分钟加上0.78min * 60sec/min = 47sec,总数是11 min 47 sec

票数 37
EN

Stack Overflow用户

发布于 2021-01-05 12:55:34

代码语言:javascript
运行
复制
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)
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44267013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档