AVAudioPlayer rate

Donc, j'essaye de jouer un file son à un rythme différent dans iOS 5.1.1, et je n'ai absolument aucune chance. Jusqu'à présent, j'ai essayé de définir le taux de 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]; 

sans chance du tout, le son joue mais ignore tout simplement le taux que je lui donne. J'ai aussi essayé AVPlayer:

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

Encore une fois, il joue mais ignore simplement le taux que je définis. J'ai essayé un certain nombre de files audio différents mais pour l'amour de ce fil j'ai choisi Rooster-mono.wav de ce catalogue: http://sig.sapp.org/sounds/wave/

Quelqu'un at-il réussi à changer le taux de lecture sur iOS 5.1.1? Ou est-ce que quelqu'un sait ce qui me manque ici?

Je fais ceci pour changer légèrement la hauteur de certains de mes samples, je réalise que je pourrais le faire en utilisant RemoteIO ou quelque chose de similaire mais cela semble totalement exagéré pour ce que j'essaye de réaliser (un simple ajustement de la vitesse de lecture).

Voici un code que je connais qui fonctionne, juste re-testé dans une application sur laquelle j'ai travaillé. Comme vous le mentionnez, l'utilisation de setEnableRate: et setRate: ne fonctionnera qu'avec iOS 5.0 et supérieur. donc j'utilise respondsToSelector: pour tester sur l'appareil si oui ou non l'appareil acceptera la requête:

 _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; 

fonctionnant sur un appareil iOS 5, il effectue le double débit avec succès. fonctionnant sur iOS 4.3, il le joue à vitesse normale.

Ainsi, la seule façon d'get le bon taux est si votre appareil a iOS 5 dessus.

Modifiez le code pour:

 avPlayer = [[AVPlayer alloc] initWithURL:referenceURL]; [avPlayer play]; //call play first avPlayer.rate = 0.5; //then set rate 

C'est comme ça que tu le fais.

la valeur du taux est comprise entre 0.1f – 2.0f

 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]; 

Swift 2.0

 let player = AVPlayer(URL: url) player.play() player.rate = 0.9