6

そこで、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];

運がまったくない場合、サウンドは再生されますが、指定したレートは無視されます。AVPlayerも試しました:

avPlayer = [[AVPlayer alloc] initWithURL:referenceURL];
avPlayer.rate = 0.5;
[avPlayer play];

繰り返しますが、再生しますが、設定したレートを無視します。さまざまなオーディオ ファイルを試してみましたが、このスレッドのために、次のカタログから Rooster-mono.wav を選択しました: http://sig.sapp.org/sounds/wave/

iOS 5.1.1 で再生レートを変更して成功した人はいますか? または、私がここで見逃しているものを誰かが知っていますか?

私はサンプルのいくつかのピッチをわずかに変更するためにこれを行っています.RemoteIOまたは同様のものを使用してこれを行うことができることを認識していますが、それは私が達成しようとしていること(単純な再生レート調整)に対して完全にやり過ぎのようです.

4

4 に答える 4

8

コードを次のように変更します。

avPlayer = [[AVPlayer alloc] initWithURL:referenceURL];

[avPlayer play]; //call play first

avPlayer.rate = 0.5; //then set rate
于 2012-07-24T10:13:24.383 に答える
8

これは、私が取り組んでいるアプリで再テストしただけで、動作することがわかっているコードです。あなたが言及したように、setEnableRate:andsetRate:を使用すると、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;

iOS 5 デバイスで実行すると、ダブルレートが正常に実行されます。iOS 4.3 で実行すると、通常の速度で再生されます。

したがって、適切なレートを得る唯一の方法は、デバイスに iOS 5 が搭載されている場合です。

于 2012-06-21T09:59:28.663 に答える
1

スイフト2.0

let player = AVPlayer(URL: url)
player.play()
player.rate = 0.9
于 2016-03-08T15:21:59.803 に答える