Es könnte doppelte Frage sein, aber ich verbrachte zu viel Zeit für die Lösung. Ich lade eine mp4-Datei in das Dokumentarverzeichnis herunter. Ich kann alle Dateinamen mit dieser Funktion erhalten:So erhalten Sie Videodauer in Document Directory
func listFilesFromDocumentsFolder() -> [String]?
{
let fileMngr = FileManager.default;
let docs = fileMngr.urls(for: .documentDirectory, in: .userDomainMask)[0].path
return try? fileMngr.contentsOfDirectory(atPath:docs)
}
Und ich möchte alle Zeitlänge dieser Datei bekommen. Lassen Sie mich zeigen, was ich versuche:
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:NSURL = urls.first as! NSURL as! NSURL{
let yourFinalVideoURL = documentDirectory.appendingPathComponent(downs[i])
let asset : AVURLAsset = 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)
}
der Ausgang
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
Meiner Meinung nach ist ich falsch gemacht habe, wenn ich versuche URL meiner Videodatei zu erhalten. Aber wie behebt man das? Ich probiere viele Dinge aus. Auch ich überprüfe ob die Datei existiert oder nicht. Was es natürlich gibt.
Auch versuche ich
AVAsset(url: URL.init(url: yourFinalVideoURL)!)
unfortunetely funktioniert es nicht ..
für Lösung danke trotzdem schon ...
Was bekommen Sie, wenn Sie 'totalSeconds' statt' mediaTime' drucken? – rmaddy
Unzusammenhängend, aber warum all das wirklich schlechte Casting mit 'NSURL'? – rmaddy
Hallo Maddy, seine 0 (Null) auch ... – Antiokhos