AVAssetTrack:音轨没有timeRange?

时间:2011-04-29 00:13:58

标签: ios avfoundation

使用以下内容和MP3文件:

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);

这笔交易是什么?这只是格式的怪癖吗?

1 个答案:

答案 0 :(得分:2)

对于后来出现的人:据我所知,是的,AVAssetTrack没有时间范围,如果它是音频,你必须使用AVAsset持续时间。但是仍然不确定这是否仅适用于MP3,或者是什么。