AVAudioPlayer: Как изменить скорость воспроизведения звука? - PullRequest
15 голосов
/ 28 февраля 2010

Я хочу контролировать скорость воспроизведения звука в AVAudioplayer. Это возможно? Если так, как бы вы это сделали?

Ответы [ 7 ]

29 голосов
/ 08 января 2013

Теперь можно изменить скорость воспроизведения.

Пример кода:

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; //<-- Playback Speed
[player play];

enableRate установлен на YES, и вы можете изменить его.

Подробнее см. В документах .

7 голосов
/ 12 ноября 2011

Похоже, это работает для iOS5 - документы и посмотрите на скорость .

спасибо,

5 голосов
/ 13 февраля 2016

Свифт 2.0

Вы можете увеличить скорость, выполнив это:

player.prepareToPlay()
player.enableRate = true
player.rate = 2.0
player.play()

Если вы хотите зациклить, вы можете добавить это:

player.numberOfLoops = 3
1 голос
/ 19 мая 2017

Попробуйте это -

audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf")
        audioP.enableRate = true
        audioP.prepareToPlay()
        audioP.rate = 1.5
        audioP.play()
1 голос
/ 28 февраля 2010

Вы не можете. Вы можете изменить только громкость, а не скорость воспроизведения.

Я думаю, что для этого вам придется использовать гораздо более низкий уровень API Audio Queue и манипулировать аудиопотоком вручную, чтобы применить этот эффект.

0 голосов
/ 04 марта 2018

set enableRate = YES, а затем вы можете настроить скорость от 0,1 до 2,0 для замедления и ускорения (1,0 - нормальная скорость)

0 голосов
/ 28 февраля 2010

AVAudioPlayer не поддерживает настройку скорости воспроизведения.Сервисы Audio Queue Services довольно сложны в использовании, поэтому вы можете попробовать OpenAL.См. Звуковой движок из Cocos2D или Finch для примеров того, как обернуть OpenAL в Objective-C.

...