我的应用程序包含一个音频播放器,它使用 AVAudio 播放来自 iPod 音乐库的音频文件。我想为播放器添加一个音高转换功能,而我看过的音高转换库需要使用不同的音频框架编写一个新的播放器。
我目前正在使用 AVAudioMix 来更改播放器的音量,我注意到其中一个音频输入参数是audioTimePitchAlgorithm ,它具有一个看起来像我需要的常量AVAudioTimePitchAlgorithmSpectral 。文档说它支持从 1/32 到 32 的可变速率。但我不知道如何设置该速率。
这是我到目前为止的代码(基于this SO answer),并指出丢失的部分:
AVPlayer *player = self.audioPlayer;
NSArray *audioTracks = [player.currentItem.asset tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVAssetTrack *track in audioTracks) {
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
audioInputParams.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithmSpectral;
audioInputParams.audioTimePitchRate = 0.5; <-- NEED SOMETHING LIKE THIS
audioInputParams.trackID = [track trackID];
[allAudioParams addObject:audioInputParams];
}
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
[audioMix setInputParameters:allAudioParams];
[player.currentItem setAudioMix:audioMix];
我搜索了谷歌、开发论坛、AVFoundation 编程指南和框架头文件,但没有找到更多相关信息。有谁知道这应该如何工作?