获取视频的准确时长
Get the accurate duration of a video
我正在制作一个播放器,我想列出所有文件,并在所有文件前面显示视频的时长。
唯一的问题是我没有得到正确的视频时长,有时 return 时长完全错误。
我尝试了以下解决方案:
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 分钟的视频,它 return 是我 = 11:78,一个视频怎么会有 11 分 78 秒?
所以我认为问题出在视频上,我选择了另一个 1:16 分钟的视频,returned 值再次为 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)
}
对于视频 here 它打印正确的“5.568”。
根据评论编辑:
returns 707
秒除以 60 sec/min
的视频是 11.78
。这是 11.78 分钟,或 11 分钟 0.78min * 60sec/min = 47sec
,总计 11 min 47 sec
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)
}
我正在制作一个播放器,我想列出所有文件,并在所有文件前面显示视频的时长。
唯一的问题是我没有得到正确的视频时长,有时 return 时长完全错误。
我尝试了以下解决方案:
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 分钟的视频,它 return 是我 = 11:78,一个视频怎么会有 11 分 78 秒?
所以我认为问题出在视频上,我选择了另一个 1:16 分钟的视频,returned 值再次为 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)
}
对于视频 here 它打印正确的“5.568”。
根据评论编辑:
returns 707
秒除以 60 sec/min
的视频是 11.78
。这是 11.78 分钟,或 11 分钟 0.78min * 60sec/min = 47sec
,总计 11 min 47 sec
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)
}