我正在尝试根据我发送给Avplayer的速率更改AvplayerItem的音频。
为此,我正在用Avasset初始化AvplayerItem,以指定" Avaudiotimepitchalgorithmvarispeed",例如:
AVPlayerItem *nPlayerItem = [AVPlayerItem playerItemWithAsset:asset];
[nPlayerItem setAudioTimePitchAlgorithm:AVAudioTimePitchAlgorithmVarispeed];
然后,我将playerItem连接到Avplayer,但是当我将Avplayer的速率设置为小于1或大于1时,音高不会改变。取而代之的是,AvplayerItem使用" Avaudiotimepitchalgorithspectral"算法,并且不符合我指定的算法。我的目标是10.9,并以10.9为目标。根据文档,此功能可从10.9开始使用。
i通过1)将playerItem添加到avplayer 2)在玩家项目的状态上设置键值观察(KVO):
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if ([object isKindOfClass:[AVPlayerItem class]] && [keyPath isEqualToString:@"status"]) {
AVPlayerItem *nPlayerItem = (AVPlayerItem *)object;
if([nPlayerItem status] == AVPlayerItemStatusReadyToPlay){
[nPlayerItem setAudioTimePitchAlgorithm:AVAudioTimePitchAlgorithmVarispeed];
}
}
}
只有播放器才能达到" avplayeritemstatusreadytoplay"状态,我可以成功地将avaudiotimepitchalgorithgorithmvarispeed设置在playeritems的audiotimeimeimeimemimemimemimemimemimemimemimeimepitchalgorithm.