2
我有視頻在Mac播放器視頻的持續時間是31秒。當我在我的應用程序中使用它並加載該文件時,AVAsset的持續時間爲'28 .03'。AVAsset持續時間不正確
AVAsset *videoAsset = [AVAsset assetWithURL:videoUrl];
Float64 time = CMTimeGetSeconds(videoAsset.duration);
我有視頻在Mac播放器視頻的持續時間是31秒。當我在我的應用程序中使用它並加載該文件時,AVAsset的持續時間爲'28 .03'。AVAsset持續時間不正確
AVAsset *videoAsset = [AVAsset assetWithURL:videoUrl];
Float64 time = CMTimeGetSeconds(videoAsset.duration);
對於某些類型的資產,持續時間是近似值。如果你需要的確切時間(應該是一個極端的例子)使用方法:
NSDictionary *options = @{AVURLAssetPreferPreciseDurationAndTimingKey: @YES};
AVURLAsset *videoAsset = [URLAssetWithURL:videoUrl options:options];
可以在documentation找到更多信息。計算持續時間可能需要一些時間,所以記得要使用異步加載:
[videoAsset loadValuesAsynchronouslyForKeys:@[@"duration"] completionHandler:^{
switch ([videoAsset statusOfValueForKey:@"duration" error:nil]) {
case AVKeyValueStatusLoaded:
Float64 time = CMTimeGetSeconds(videoAsset.duration);
// ...
break;
default:
// other cases like cancellation or fail
break;
}
}];
您可以找到視頻中的使用AVFoundation
API一些技巧 Discovering AV Foundation - WWDC 2010 Session 405