iPhone SDK: изменение скорости воспроизведения с помощью основного звука AVAudioPlayer - PullRequest
2 голосов
/ 11 марта 2010

Я хотел бы иметь возможность воспроизводить записанный мной звук с использованием AVAudioRecorder со скоростью 1,5x или 2,0x. Я не вижу ничего в AVAudioPlayer, который бы поддерживал это. Буду признателен за некоторые предложения, с кодом, если это возможно, о том, как сделать это с помощью iPhone 3.x SDK. Я не слишком обеспокоен снижением высоты тона, чтобы компенсировать увеличение скорости воспроизведения, но возможность сделать это была бы оптимальной.

Ответы [ 3 ]

2 голосов
/ 21 марта 2010

Изменение частоты дискретизации должно работать точно так же, как если бы вы играли быстрее. Все становится выше в поле. Чтобы сохранить высоту тона, вам нужно настроить график Audio Unit, который включает в себя эффект AUPitch, и понизить высоту тона в том же соотношении, в котором вы увеличиваете частоту дискретизации на.

1 голос
/ 11 марта 2010

См. этот вопрос . Другими словами, вам придется использовать другой API, такой как Audio Queue Services. Если вы хотите попробовать простой взлом, вы можете попробовать удвоить свойство частоты дискретизации аудиофайла. Это вероятно не будет работать все же. Кроме того, имейте в виду, что процессору достаточно сложно регулировать скорость воспроизведения, сохраняя ту же высоту. Вам нужно будет использовать одну из доступных техник под названием «растяжение времени» . Кроме того, если вы этого еще не поняли, делать сложные вещи со звуком на iPhone - большая проблема, потому что документация Apple, как правило, либо очень плохая, либо вообще отсутствует.

0 голосов
/ 14 сентября 2017

Если вы хотите воспроизводить звук быстрее или медленнее, в avAudioPlayer есть встроенный метод. Вы пробовали AudioPlayer Оценить свойство? в Свифте это будет так -

    audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf")
    audioP.enableRate = true
    audioP.prepareToPlay()
    audioP.rate = 1.5
    audioP.play()
...