AVQueuePlayer设置音频的速度

时间:2016-03-11 05:00:28

标签: ios objective-c audio avqueueplayer tempo

我正在使用AVQueuePlayer来播放本地保存的多个音频。

供参考,请查看以下代码,

for (int j = 0; j < arrPlayData.count; j++) {

    path =[[NSBundle mainBundle] pathForResource:[[arrPlayData objectAtIndex:j] valueForKey:AUDIO_NAME] ofType:@"wav"];
    item = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:path]];
    if (_queuePlayer == nil) {
        _queuePlayer = [[AVQueuePlayer alloc] initWithPlayerItem:item];
     } else{
        [_queuePlayer insertItem:item afterItem:nil];
     }
}
[_queuePlayer setVolume:1.0];
[_queuePlayer play];

这很好用,

现在我想对0到240之间生成的音频应用速度,如下图所示。

here

我知道setRate:属性并将其应用如下,

[_queuePlayer setRate:sldValue/240.0];

这里,sldValue是从滑块上方选择的值。如果我从滑块选择240,则速率变为1(以正常形式播放音频 - 原始音频)。当我从滑块中选择下来的值时,它会降低音频速度。

我的查询是如何提高音频速度,然后正常播放。或者这个节奏如何正常工作?

非常感谢任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

[_queuePlayer setRate:sldValue/245.0];
     

这里,sldValue是从滑块上方选择的值。如果我从滑块选择240,则速率变为1(以正常形式播放音频 - 原始音频)。当我从滑块中选择向下值时,它会降低音频速度。

那是因为那正是你所要求的。想一想。如果滑块位于240,那么sldValue/245.0大约为1,这意味着正常,就像你说的那样。如果你向下滑动,让我们说120,那么sldValue/245.0约为1/2,这是半速。

该程序完全按照您的要求执行操作。如果那不是你想要的,那就别说了!

此外,您需要适当地设置播放器项目的audioTimePitchAlgorithm,否则您将无法获得全部费率。请参阅:AVPlayer rate property does not work?