How to change the play speed rate on AVPlayer (swift)

Fredric Cliver
Oct 31, 2020

When you play audio with the AVPlayer, you would use this

player = AVPlayer.init(playerItem: playerItem)
player?.play()

There a specific property to calibrate the audio play speed rate. You can use the ‘rate’ property.

player = AVPlayer.init(playerItem: playerItem)
player?.rate = 0.7
player?.play()

But, in this case, it doesn’t work. You have to place after “.play()”

player = AVPlayer.init(playerItem: playerItem)
player?.play()
player?.rate = 0.7

After this, you play the sound, and you are able to recognize it’s not really okay. Because the sound is nasty. and You can hear the broken frame

You should set the “audioTimePitchAlgorithm” property manually.

player = AVPlayer.init(playerItem: playerItem)
player?.currentItem?.audioTimePitchAlgorithm = .timeDomain
player?.play()
player?.rate = 0.7

audioTimePitchAlgorithm has four different options.

Type Properties

static let lowQualityZeroLatency: AVAudioTimePitchAlgorithm
Low quality and very low computationally intensive pitch algorithm.

--

--

Fredric Cliver

Majored in Physics, self-taught and worked in the IT industry as a Dev/Design/Planning for 11 years. And I had run my Startup for 3 years. I fancy a ☔️ 🇬🇧