2011-04-29 19 views
2

具有以下,和MP3文件:AVAssetTrack:音軌沒有timeRange?

AVURLAsset* audio = [[AVURLAsset alloc]initWithURL:audioUrl options:nil]; 
AVAssetTrack* audioTrack = [[audio tracksWithMediaType:AVMediaTypeAudio] 
    objectAtIndex:0]; 
CMTime audioDuration = audio.duration; 

NSLog(@"audioDuration: %qi/%i; audioTrackDuration: %qi/%i", 
     audioDuration.value, audioDuration.timescale, 
     audioTrack.timeRange.duration.value, 
     audioTrack.timeRange.duration.timescale); 

我得到:

audioDuration: 1513728/44100; audioTrackDuration: 0/1 

需要注意的是賽道本身是好的,當我使用它以後。我想這可能是一個異步鍵 - 值編碼的問題,但這個NSParameterAssert似傳:

AVKeyValueStatus trStatus = [audioTrack statusOfValueForKey:@"timeRange" 
    error:&theError]; 
NSParameterAssert(trStatus == AVKeyValueStatusLoaded); 

這是怎麼回事?這只是格式的一個怪癖?

回答

2

對於後來的任何人:據我所知,是的,AVAssetTrack沒有時間範圍,如果它是音頻,並且您必須使用AVAsset持續時間。不過還不確定這是否僅限於MP3,或者是什麼。