iOS: cómo get la duración del file .mp4 mediante el uso de AVAsset o AVURLAsset

Sé que la duración de las preguntas de tipo de video ha sido respondida antes, pero estoy enfrentando problemas reales para get la duración de un file .mp4 mediante el uso de AVAsset y AVURLAsset . estoy usando el código siguiente

 NSString *itemPathString = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0] stringByAppendingPathComponent:obmodel.actualname]; NSURL *itemPathURL = [NSURL URLWithString:itemPathString]; if([[NSFileManager defaultManager] fileExistsAtPath:itemPathString]){ NSLog(@"File Exists"); } AVAsset *videoAsset = (AVAsset *)[AVAsset assetWithURL:itemPathURL]; AVAssetTrack *videoAssetTrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]; NSLog(@"duration: %.2f", CMTimeGetSeconds(videoAssetTrack.timeRange.duration)); if(CMTimeGetSeconds(videoAsset.duration) >= 59.0){ } 

pero cada vez que devuelve 0 también he importado los siguientes headers

 #import <AVFoundation/AVAsset.h> #import <CoreMedia/CoreMedia.h> #import <AVFoundation/AVFoundation.h> 

También he probado otro código que conozco, pero ninguno me funcionó. Mi video funciona correctamente si lo hago a través de iExplorer , mi ruta es buena pero no sé qué me estoy perdiendo. Me gustaría compartir que lo que he encontrado es que mis AVAssets no se cargan correctamente, por favor me sugieren qué hacer.

Sí, he tenido problemas similares antes. Para mí, el problema desapareció cuando usé:

 NSURL *itemPathURL = [NSURL fileURLWithPath:itemPathString]; 

en lugar de

 NSURL *itemPathURL = [NSURL URLWithString:itemPathString]; 

Si está completamente seguro de que su ruta está bien, esto debería solucionar su problema.

¡Espero que esto ayude!