在iOS中,可以通过设置AVPlayer.rate
来更改播放速率。
将AVPlayback rate设置为0.5时,播放会变慢。
默认情况下,以0.5播放速率播放的声音质量很差。
要提高质量,您需要设置AVPlayerItem.audioTimePitchAlgorithm
。
根据API文档,将AVPlayerItem.audioTimePitchAlgorithm
设置为AVAudioTimePitchAlgorithmSpectral
可以使质量最高。
快捷代码是:
AVPlayerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithm.spectral // AVAudioTimePitchAlgorithmSpectral
AVAudioTimePitchAlgorithmSpectral
比默认质量更能提高质量。
但是AVAudioTimePitchAlgorithmSpectral
的音质不够好。
声音仍然回声,听起来很压力。
在Apple的Podcast App中,当我将播放速度设置为1/2时,播放变慢并且声音质量很高,根本没有回音。
我希望我的应用提供与Apple的Podcast应用相同的质量。
是否有iOS API可以比AVAudioTimePitchAlgorithmSpectral
更高的声音质量?
如果没有,为什么即使他们在自己的Podcast应用程序中使用它,Apple也不提供它?
还是应该使用第三方库? 有没有免费或低价的好图书馆,很多人用来改变播放速度?
答案 0 :(得分:3)
在保持某种质量水平的同时,我遇到了相同的问题,即提高/降低速度。使用Apples API无法使其正常运行。 最后,我发现值得看一下这个出色的第三方框架:
https://github.com/AudioKit/AudioKit
允许您以直接的方式执行此操作以及更多操作。 希望这会有所帮助
答案 1 :(得分:1)
我一直在搜索并尝试学习AudioKit和Audio Unit,甚至考虑购买第三方时间拉伸音频处理库来解决最近3周内播放缓慢的质量问题。
现在终于找到了一个超级简单的解决方案。
通过设置AVPlayerItem.audioTimePitchAlgorithm
,AVPlayer可以降低音频质量,
到AVAudioTimePitchAlgorithm.timeDomain
而不是AVAudioTimePitchAlgorithm.spectral
。
文档说:
timeDomain
是一种中等质量的音调算法,其计算强度较低。 适合语音。
这意味着spectral
适合音乐。 timeDomain
适合语音。
这就是为什么我的应用程序使用的语音文件被回显的原因。
这就是为什么Apple的Podcasts App放慢音频质量的原因。 它还必须使用此时域算法。
这就是为什么似乎为音乐用途而开发的AudioKit播放劣质语音音频的原因。