2014-04-03 2 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

관련 문제