-1

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 之间的速度,如下图所示。

在此处输入图像描述

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

[_queuePlayer setRate:sldValue/240.0];

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

我的问题是如何提高音频速度然后正常播放。或者这个节奏是如何运作的?

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

4

1 回答 1

1
[_queuePlayer setRate:sldValue/245.0];

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

那是因为这正是你所要求的。想想看。如果滑块在240,那么sldValue/245.0大约是1,这意味着正常,就像你说的那样。如果你向下滑动,假设是 120,那么sldValue/245.0大约是 1/2,也就是一半的速度。

该程序正在执行您告诉它执行的操作。如果那不是你想要的,那就不要这么说!

此外,您需要audioTimePitchAlgorithm适当地设置您的播放器项目,否则您将无法获得全范围的费率。请参阅:AVPlayer 速率属性不起作用?

于 2016-03-11T05:09:00.133 回答