Je fais un lecteur et je veux lister tous les fichiers et devant tous les fichiers je veux présenter la durée de la vidéo.
Le seul problème est que je n'obtiens pas la bonne durée vidéo, parfois elle renvoie une durée complètement fausse.
J'ai essayé la solution ci-dessous:
let asset = AVAsset(url: "video.mp4")
let duration = asset.duration.seconds
Pour que ça, le temps donne parfois une valeur parfois une autre. si quelqu'un connaît une solution possible, je suis heureux d'entendre.
J'ai mis à jour le code en utilisant une solution possible mais cela n'a pas bien fonctionné,
let asset = AVAsset(url: url)
let duration = asset.duration
let durationTime = CMTimeGetSeconds(duration)
let minutes = Double(durationTime / 60)
J'ai essayé avec une vidéo d'une durée de 11:47 minutes et cela me renvoie = 11:78, comment une vidéo peut-elle avoir 11 minutes et 78 secondes?
Je pense donc que le problème est avec la vidéo, et j'ai choisi une autre vidéo de 1:16 minutes et encore une fois la valeur renvoyée est 1:26 (10 secondes erronées)
Cela fonctionne pour moi:
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)
}
Pour la vidéo ici il imprime "5.568" ce qui est correct.
Modifier à partir des commentaires:
Une vidéo qui renvoie 707
secondes lorsqu'il est divisé par 60 sec/min
est 11.78
. Cela fait 11,78 minutes, ou 11 minutes et 0.78min * 60sec/min = 47sec
, le total est 11 min 47 sec