2012-06-21 14 views
6

Così sto cercando di riprodurre un file audio a una velocità diversa in iOS 5.1.1, e sto avendo alcuna fortuna. Finora ho provato a fissare il tasso del AVAudioPlayer:tasso 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]; 

senza fortuna a tutti, la riproduzione del suono, ma solo ignora il tasso dò. Ho anche provato AVPlayer:

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

Ancora, suona ma ignora solo la velocità impostata. Ho provato un certo numero di diversi file audio, ma per questo thread ho selezionato Rooster-mono.wav da questo catalogo: http://sig.sapp.org/sounds/wave/

Qualcuno ha avuto successo con la modifica della velocità di riproduzione su iOS 5.1.1? O qualcuno sa cosa mi manca qui?

Sto facendo questo per cambiare leggermente il tono di alcuni dei miei campioni, mi rendo conto che potrei farlo usando RemoteIO o qualcosa di simile ma sembra eccessivo per quello che sto cercando di ottenere (una semplice regolazione della velocità di riproduzione) .

+0

questo errore che hai fatto qui è che plauer.rate = 1.5f. Dovete mettere "f", alla fine di esso altrimenti non funzionerà –

risposta

8

Ecco un codice che so funzionare, appena rieseguito in un'app su cui ho lavorato. come dici, utilizzando setEnableRate: e setRate: funzionerà solo con iOS 5.0 e versioni successive. Quindi io uso respondsToSelector: per testare il dispositivo se il dispositivo accetterà la richiesta:

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

in esecuzione su un dispositivo iOS 5, esegue il doppio tasso di successo. funziona su iOS 4.3, lo riproduce a velocità normale.

quindi, l'unico modo per ottenere la tariffa corretta è se il dispositivo è dotato di iOS 5.

+0

lavoro Good..Thanx – sohil

8

modificare il codice per:

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

[avPlayer play]; //call play first 

avPlayer.rate = 0.5; //then set rate 
+0

questo è sbagliato. È necessario impostare prima la velocità e quindi utilizzare la riproduzione –

+0

Questo in realtà funziona per me, non è possibile sapere esattamente perché. –

+0

Ti stai sbagliando tutto. L'impostazione della velocità la riproduce alla velocità. La riproduzione inizia a riprodurre il video alla velocità predefinita di 1.0. – simplexity

3

Questo è come lo fai.

valore di velocità è compresa tra 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]; 
1

Swift 2,0

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