6

我知道之前已经回答了视频类型问题的持续时间,但是我在.mp4使用AVAsset和 by获取文件的持续时间时遇到了真正的麻烦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的加载不正确请建议我应该怎么做。

4

1 回答 1

9

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

NSURL *itemPathURL = [NSURL fileURLWithPath:itemPathString];

代替

NSURL *itemPathURL = [NSURL URLWithString:itemPathString];

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

希望这可以帮助!

于 2015-03-26T00:06:49.923 回答