use*_*895 6 avfoundation avaudioplayer audio-processing ios avplayer
所以我试图在iOS 5.1.1中以不同的速率播放声音文件,并且绝对没有运气.到目前为止,我已经尝试设置AVAudioPlayer的速率:
player = [[AVAudioPlayer alloc] initWithContentsOfURL:referenceURL error:&error];
player.enableRate = YES;
player.rate = 1.5;
player.numberOfLoops = 0;
player.delegate = self;
[player prepareToPlay];
[player play];
Run Code Online (Sandbox Code Playgroud)
没有运气,声音只会忽略我给它的速度.我也试过AVPlayer:
avPlayer = [[AVPlayer alloc] initWithURL:referenceURL];
avPlayer.rate = 0.5;
[avPlayer play];
Run Code Online (Sandbox Code Playgroud)
再次,它播放但只是忽略我设置的速率.我尝试了很多不同的音频文件但是为了这个帖子我从这个目录中选择了Rooster-mono.wav:http://sig.sapp.org/sounds/wave/
有没有人在改变iOS 5.1.1的播放速度方面取得了哪些成功?或者有人知道我在这里失踪了吗?
我这样做是为了改变音高的轻微我的一些样品,我知道我可以通过使用RemoteIO或类似的东西做到这一点,但似乎总矫枉过正我想实现(一个简单的播放速度调整).
这里有一些我知道可行的代码,只是在我一直在努力的应用程序中重新测试过.正如您所提到的,使用setEnableRate:和setRate:仅适用于iOS 5.0及更高版本.所以我respondsToSelector:用来测试设备是否接受请求:
_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;
Run Code Online (Sandbox Code Playgroud)
在iOS 5设备上运行,它成功执行双倍速率.在iOS 4.3上运行,它以正常速度播放.
所以,你获得适当费率的唯一方法是你的设备上有iOS 5.
小智 8
将代码修改为:
avPlayer = [[AVPlayer alloc] initWithURL:referenceURL];
[avPlayer play]; //call play first
avPlayer.rate = 0.5; //then set rate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7789 次 |
| 最近记录: |