2011-09-16 1 views
3

, 정말 같은, 짧은 비디오에서 AVURLAsset를 만들 : 이것은 잘 작동하는 것 같다AVURLAsset에 지속 시간이없는 이유는 무엇입니까? 내 iOS 앱 (SDK 5.6)에서

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:assetURL options:nil]; 

. gdb에서 애셋을 검사하면 다음과 같이 보입니다 :

(gdb) po asset 
<AVURLAsset: 0x1a1c40, URL = file://localhost/var/mobile/Applications/A2142D8E-BC19-4E0B-A4C8-ABED4F7D4970/Documents/sample_iTunes.mov> 

나는 애플 웹 사이트의 샘플 .mov 파일을 앱의 Documents 디렉토리에 저장했다.

나는 추가 처리를 위해이 동영상의 재생 시간을 알고 싶습니다

,하지만 난 시간 속성을 검사 할 때,이 얻을 : 내가 잘못

(gdb) po asset.duration 
There is no member named duration. 

를하고있는 중이 야 무엇을? AVAsset 또는 AVAssetTrack의 기간을 결정하는 다른 방법이 있습니까?

TIA : 자산을 만들기 존

답변

7

그러나 반드시 사용을위한 준비 것을 의미하지 않는다. 사용하려면 저작물에 트랙이로드되어 있어야합니다. [NSArray를 arrayWithObject : tracksKey] completionHandler : 가^{// 가 완료 블록 간다

[자산 loadValuesAsynchronouslyForKeys로 저작물로드. }]];

배열에 '기간'키가 있어야합니다. ;

로딩이 완료

Float64 durationSeconds CMTimeGetSeconds = ([< #An 자산 번호> 기간]) 시간을 얻을

1

스위프트 3.0 및 수입 AVFoundation

let asset = AVAsset(url: URL(fileURLWithPath: ("Your File Path here")!)) 
    let totalSeconds = Int(CMTimeGetSeconds(asset.duration)) 
    let minutes = totalSeconds/60 
    let seconds = totalSeconds % 60 
    let mediaTime = String(format:"%02i:%02i",minutes, seconds)