首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AVAudioPlayer速率

AVAudioPlayer速率
EN

Stack Overflow用户
提问于 2012-06-21 12:46:32
回答 4查看 8.4K关注 0票数 6

因此,我尝试在iOS 5.1.1中以不同的速率播放声音文件,但绝对没有运气。到目前为止,我已经尝试设置了AVAudioPlayer的速率:

代码语言:javascript
复制
player = [[AVAudioPlayer alloc] initWithContentsOfURL:referenceURL error:&error];
player.enableRate = YES;
player.rate = 1.5;
player.numberOfLoops = 0;
player.delegate = self;
[player prepareToPlay];
[player play];

如果完全没有运气,声音就会播放,但会忽略我给它的速率。我也尝试过AVPlayer:

代码语言:javascript
复制
avPlayer = [[AVPlayer alloc] initWithURL:referenceURL];
avPlayer.rate = 0.5;
[avPlayer play];

同样,它会播放,但会忽略我设置的速率。我已经尝试了许多不同的音频文件,但是为了这个主题,我从这个目录中选择了Rooster-mon.wav:http://sig.sapp.org/sounds/wave/

有没有人成功地改变了iOS 5.1.1的播放速率?或者有人知道我在这里错过了什么吗?

我这样做是为了稍微改变我的一些样本的音高,我意识到我可以通过使用RemoteIO或类似的东西来做到这一点,但这似乎完全夸大了我试图实现的目标(简单的回放速率调整)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-21 17:59:29

这里有一些我知道可以工作的代码,只是在我一直在开发的应用程序中重新测试。正如您所提到的,使用setEnableRate:setRate:只适用于iOS 5.0和更高版本。因此,我使用respondsToSelector:在设备上测试设备是否会接受请求:

代码语言:javascript
复制
_noticeAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Rooster-mono" ofType:@"wav"]]
                                                      error:nil];;
if ([_noticeAudio respondsToSelector:@selector(setEnableRate:)])
    _noticeAudio.enableRate = YES;
if ([_noticeAudio respondsToSelector:@selector(setRate:)])
    _noticeAudio.rate = 2.0;

它在iOS 5设备上运行,成功地执行了双倍速率。在iOS 4.3上运行,它以正常速度播放。

所以,只有在你的设备上安装了iOS 5的情况下,你才能获得合适的价格。

票数 8
EN

Stack Overflow用户

发布于 2012-07-24 18:13:24

将代码修改为:

代码语言:javascript
复制
avPlayer = [[AVPlayer alloc] initWithURL:referenceURL];

[avPlayer play]; //call play first

avPlayer.rate = 0.5; //then set rate
票数 8
EN

Stack Overflow用户

发布于 2013-06-07 23:04:32

这就是你怎么做的。

速率值在0.1f - 2.0f之间

代码语言:javascript
复制
player = [[AVAudioPlayer alloc]
          initWithContentsOfURL:[NSURL fileURLWithPath:path]
          error:&err];
player.volume = 0.4f;
player.enableRate=YES;
[player prepareToPlay];
[player setNumberOfLoops:0];
player.rate=2.0f;
[player play];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11131631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档