iOS-如何使用AVAsset或AVURLAsset获取.mp4文件的持续时间

时间:2015-03-25 12:32:34

标签: ios avfoundation mp4 duration avasset

我知道视频类型问题的持续时间之前已经得到解答,但我在使用.mp4AVAsset获取AVURLAsset文件的持续时间时遇到了麻烦。我正在使用以下代码

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){
}

但每次返回0 我还导入了以下headers

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

我还尝试过其他一些我知道的代码但是没有人能为我工作。 如果我通过iExplorer播放我的视频是正常的,我的路径很好,但不知道我错过了什么。 我想分享一下,我发现我的AVAssets没有正确加载 请告诉我应该做些什么。

1 个答案:

答案 0 :(得分:7)

是的,之前我遇到过类似的问题。对我来说,当我使用时,问题就消失了:

NSURL *itemPathURL = [NSURL fileURLWithPath:itemPathString];

而不是

NSURL *itemPathURL = [NSURL URLWithString:itemPathString];

如果你完全确定你的路径没问题,这应该可以解决你的问题。

希望这有帮助!