使用以下内容和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);
这笔交易是什么?这只是格式的怪癖吗?
答案 0 :(得分:2)
对于后来出现的人:据我所知,是的,AVAssetTrack
没有时间范围,如果它是音频,你必须使用AVAsset
持续时间。但是仍然不确定这是否仅适用于MP3,或者是什么。