2014-04-03 35 views
2

我有視頻在Mac播放器視頻的持續時間是31秒。當我在我的應用程序中使用它並加載該文件時,AVAsset的持續時間爲'28 .03'。AVAsset持續時間不正確

AVAsset *videoAsset = [AVAsset assetWithURL:videoUrl]; 
Float64 time = CMTimeGetSeconds(videoAsset.duration); 

回答

1

對於某些類型的資產,持續時間是近似值。如果你需要的確切時間(應該是一個極端的例子)使用方法:

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