【问题标题】:AVQueuePlayer set Tempo of audioAVQueuePlayer 设置音频的 Tempo
【发布时间】:2016-03-11 05:00:27
【问题描述】:

我正在使用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(以正常形式播放音频 - 原始格式)。当我从滑块中选择向下值时,它会降低音频速度。

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

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

【问题讨论】:

标签: ios objective-c audio avqueueplayer tempo


【解决方案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?

【讨论】:

  • 您想要的速率有哪些限制? “0”应该代表什么速度,“240”应该代表什么速度?你甚至知道你想要什么吗?
  • 是的,我非常清楚自己想要什么。但对节奏一无所知。这就是为什么在这里问。我也知道“程序正在做我告诉它做的事情”。但是因为它以正常速度(原始音频)或低于正常速度播放。那么是否可以提高音频速度。正如我通过将速率设置为 2(静态值)来尝试的那样。但我没有发现任何速度变化。
  • 请回答我的问题! “0”应该代表什么速度,“240”应该代表什么速度?
  • 我想要的是,如果我的滑块值为 120,则表示 1/2。然后应该播放原始音频,如果超过 1/2 则应该增加音频速度。如果它低于 1/2,那么音频速度应该会降低。
  • 这就是现在的意思。正如我在回答中所说,120 表示 1/2。那么有什么问题呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
相关资源
最近更新 更多