我正在尝试根据发送到AVPlayer的速率更改AVPlayerItem的音频音高 .
为此,我正在使用指定'AVAudioTimePitchAlgorithmVarispeed'的AVAsset初始化AVPlayerItem,如下所示:
AVPlayerItem *nPlayerItem = [AVPlayerItem playerItemWithAsset:asset];
[nPlayerItem setAudioTimePitchAlgorithm:AVAudioTimePitchAlgorithmVarispeed];
然后我将playerItem附加到AVPlayer,但是当我将AVPlayer的速率设置为小于1或大于1时,音高不会改变 . 相反,AVPlayerItem使用'AVAudioTimePitchAlgorithmSpectral'算法,并且不遵守我指定的算法 . 我的目标是10.9,并 Build 10.9 . 根据文档,此功能从10.9开始提供 .
1 回答
我解决了我的问题:1)将playerItem添加到AVPlayer 2)设置玩家项目状态的键值观察(KVO):
只有当playerItem达到状态'AVPlayerItemStatusReadyToPlay'后,才能在playerItems的audioTimePitchAlgorithm上成功设置AVAudioTimePitchAlgorithmVarispeed .