我正在制作一个播放器,我想要列出所有文件,并在所有文件之前,我想要呈现视频的持续时间。
唯一的问题是我没有得到正确的视频持续时间,有时它返回的持续时间是完全错误的。
我已经尝试了以下解决方案:
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分钟的视频,结果返回me = 11: 78,视频怎么会有11分78秒?
所以我认为问题出在视频上,我选择了另一个1:16分钟的视频,然后再次返回1:26 (10秒错误)
发布于 2017-05-30 17:14:00
这对我来说很有效:
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
发布于 2021-01-05 04:55:34
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)
}
https://stackoverflow.com/questions/44267013
复制相似问题