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

时间:2015-04-14 10:58:46

标签: ios swift avaudioplayer

我正在使用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+中改善声音?

修改

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

5 个答案:

答案 0 :(得分:51)

音量很低,因为声音来自iPhone的顶部扬声器(用于呼叫)。

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

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

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

Swift 3.0

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

Swift 4

的解决方案
try? session.setCategory(.playAndRecord, mode: .default, policy: .default, options: .defaultToSpeaker)

答案 3 :(得分: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
}

在您的情况下,在播放音频之前设置setMediaVolume(1)。

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

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

答案 4 :(得分:0)

我也在快速的操场上体验到了这一点,它的音量比原始文件中的声音小得多。只需增加音量即可。

audioPlayer?.volume = 3