AVAudioPlayer在iPhone 6和6+中以非常低的音量播放声音



我正在使用AVAudioPlayer播放声音。

iPod(iOS7和iOS8)的音量很好。

但是当我在iPhone中播放相同的声音时,声音以非常低的音量播放。

这是我的代码:

var audioPlayer: AVAudioPlayer?
var soundURL:NSURL? = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sound", ofType: "mp3")!)
audioPlayer = AVAudioPlayer(contentsOfURL: soundURL, error: nil)
audioPlayer?.prepareToPlay()
audioPlayer?.volume = 1
audioPlayer?.play()

我已经在我的项目中包含了 AudioToolbox.framework 库。

如何改善 iPhone6 和 6+ 中的声音?

编辑

最近我注意到声音自动增加了几秒钟,但不知道发生了什么问题。?

音量

很低,因为声音是通过iPhone中的顶部扬声器(用于通话)发出的。

您必须覆盖主扬声器的AVAudioSession输出端口。(底部扬声器)

这是将音频输出路由到扬声器的代码

AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker, error: &error)

斯威夫特 3.0

do {
     try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
   } catch _ {
}

Swift 4 的解决方案

try? session.setCategory(.playAndRecord, mode: .default, policy: .default, options: .defaultToSpeaker)

附言对于完整的课程,您可以查看我的 gist

我认为

如果您将 AVAudioPlayer 的音量设置为 1,那么问题出在系统音量上。播放声音时,您可以使用不同的音频类别,并且不同类别或不同音频路由(如母语人士、耳机或蓝牙)的音量不同 应用中的默认类别将是环境音乐,但音乐应用的默认类别是播放。您可以尝试在播放声音时而不是在播放声音之前调整音量。

您还需要最大化媒体音量。

extension MPVolumeView {
var volumeSlider:UISlider {
    self.showsRouteButton = false
    self.showsVolumeSlider = false
    self.hidden = true
    var slider = UISlider()
    for subview in self.subviews {
        if subview.isKindOfClass(UISlider){
            slider = subview as! UISlider
            slider.continuous = false
            (subview as! UISlider).value = AVAudioSession.sharedInstance().outputVolume
            return slider
        }
    }
    return slider
   }
}

然后像这样更改音量:

func setMediaVolume(volume : Float) {
    MPVolumeView().volumeSlider.value = volume
}

在您的情况下,设置媒体音量(1) 就在你播放音频之前。

还要确保当前的音频路由是扬声器而不是听筒,您可以使用

try! AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker)

我在 swift 操场上也经历过这一点,音量比原始文件中的声音小得多。只需增加音量即可。

audioPlayer?.volume = 3

最新更新