我正在使用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+中改善声音?
修改
最近我注意到声音会自动增加几秒钟,但不知道发生了什么错误。
答案 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