Это может быть дублирующий вопрос, но я потратил много времени на решение. Я загружаю файл mp4 в документальный каталог. Я могу получить все имена файлов с помощью этой функции:
func listFilesFromDocumentsFolder() -> [String]? {
let fileMngr = FileManager.default;
let docs = fileMngr.urls(for: .documentDirectory, in: .userDomainMask)[0].path
return try? fileMngr.contentsOfDirectory(atPath: docs)
}
И я хочу получить продолжительность всех этих файлов. Позвольте мне показать, что я пытаюсь:
var downs = listFilesFromDocumentsFolder()!
for i in 0...downs.count - 1 {
if downs[i] == ".DS_Store" {
continue
}
let fileManager = FileManager.default
let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
if let documentDirectory= urls.first as! NSURL as! NSURL {
let yourFinalVideoURL = documentDirectory.appendingPathComponent(downs[i])
let asset = AVURLAsset(url: yourFinalVideoURL!) as AVURLAsset
let totalSeconds = Int(CMTimeGetSeconds(asset.duration))
let minutes = totalSeconds / 60
let seconds = totalSeconds % 60
let mediaTime = String(format:"%02i:%02i",minutes, seconds)
print(yourFinalVideoURL)
print(mediaTime)
}
вывод
Optional(file:///Users/utf8/Library/Developer/CoreSimulator/Devices/D4F341F1-38A2-498B-99F0-076BE9164A5C/data/Containers/Data/Application/718927F7-4E39-43A8-B760-2A468F82A10F/Documents/viki50102klr.mp4)
00:00
На мой взгляд, я поступил неправильно, когда пытался получить URL-адрес своего видеофайла. Но как это исправить. Я пробую много вещей. Даже я проверяю, существует ли файл или нет. Которые существуют, конечно.
Также я пытаюсь
AVAsset(url: URL(url: yourFinalVideoURL)!)
к сожалению не работает..
totalSeconds
вместоmediaTime
? - person rmaddy   schedule 01.12.2017NSURL
? - person rmaddy   schedule 01.12.2017