2011-04-29 21 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,或者是什么。