iPhone SDK: Modificare la velocità di riproduzione utilizzando AVAudioPlayer core audio
-
19-09-2019 - |
Domanda
Mi piacerebbe essere in grado di riprodurre l'audio che ho registrato usando AVAudioRecorder @ 1,5x o la velocità 2,0x. Non vedo nulla in AVAudioPlayer che sosterrà questo. Apprezzerei alcuni suggerimenti, con il codice se possibile, su come raggiungere questo obiettivo con l'SDK iPhone 3.x. Io non sono eccessivamente preoccupati con l'abbassamento il passo per compensare la maggiore velocità di riproduzione, ma essere in grado di farlo sarebbe ottimale.
Soluzione
questa domanda . In altre parole, si dovrà utilizzare un'API diversa, come servizi coda audio. Se volete provare un semplice hack, si può provare a raddoppiare la frequenza di campionamento di proprietà del file audio. Probabilmente non funzionerà comunque. Inoltre, sappiate che è abbastanza CPU chiedendo di regolare la velocità di riproduzione, mantenendo lo stesso passo. Avrete bisogno di utilizzare un'una delle tecniche disponibili chiamati "tempo di stretching" . Inoltre, nel caso in cui non si è reso conto che, ormai, fare le cose complicate con l'audio su iPhone è un grande dolore perché la documentazione di Apple è in genere o molto cattiva o inesistente.
Altri suggerimenti
La modifica della frequenza di campionamento dovrebbe funzionare proprio come un registratore a nastro sarebbe se hai giocato più veloce. Tutto diventa più alto in campo. Per mantenere il passo stesso, si avrebbe bisogno di configurare un grafico Audio Unit che include l'effetto AUPitch, e abbassare il passo con lo stesso rapporto di che si aumenta la frequenza di campionamento per.
Se si desidera riprodurre l'audio velocemente o più lentamente, c'è un metodo build-in in AVAudioPlayer. Hai provato AudioPlayer Vota proprietà? in Swift sarà come questo -
audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf")
audioP.enableRate = true
audioP.prepareToPlay()
audioP.rate = 1.5
audioP.play()