为什么AvplayerItem不荣誉Avaudiotimepitchalgorithmvarispeed设置



我正在尝试根据我发送给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.

相关内容

  • 没有找到相关文章

最新更新