我知道之前已经回答了视频类型问题的持续时间,但是我在使用.mp4
和AVAsset
获取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
没有正确加载请建议我应该怎么做。
最佳答案
是的,我之前也遇到过类似的问题。对我来说,当我使用时问题就消失了:
NSURL *itemPathURL = [NSURL fileURLWithPath:itemPathString];
代替
NSURL *itemPathURL = [NSURL URLWithString:itemPathString];
如果您完全确定自己的路径是正确的,则应该可以解决您的问题。
希望这可以帮助!
关于ios - iOS-如何通过使用AVAsset或AVURLAsset获取.mp4文件的持续时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29255776/