web-dev-qa-db-fra.com

AVAudioPlayer joue du son avec un volume très faible sur iPhone 6 et 6+

Je joue un son avec AVAudioPlayer.

Le volume sonore dans les iPod (iOS7 et iOS8) est bon.

Mais lorsque je reproduis le même son dans les iPhones, le volume est très faible.

Voici mon code:

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()

J'ai déjà inclus AudioToolbox.framework library dans mon projet.

Comment puis-je améliorer le son sur iPhone6 ​​et 6+?

MODIFIER

Récemment, j'ai remarqué que le son était automatiquement augmenté pendant quelques secondes, mais je ne sais pas ce qui ne va pas se passe.?

12
Zaid Pathan

Je pense que si vous réglez le volume d’AVAudioPlayer sur 1, le problème se situe au niveau du système. Vous pouvez utiliser une catégorie audio différente lors de la lecture de votre son et le volume varie selon la catégorie ou le trajet audio ( Bluetooth, par exemple) (la catégorie par défaut de votre application est ambient , mais celle de la musique est playback . . Vous pouvez essayer de régler le volume lorsque vous jouez votre son plutôt qu'avant il est joué.

3
user3349433

Le volume est faible car le son provient du haut-parleur supérieur de l'iPhone (utilisé pour les appels). 

Vous devez remplacer le port de sortie AVAudioSession sur le haut-parleur principal (haut-parleur inférieur).

C’est le code qui dirige la sortie audio vers le haut-parleur

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

Swift 3.0 :

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

Solution pour Swift 4

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

vous devez également maximiser le volume des médias.

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
   }
}

puis changez le volume comme ceci: 

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

dans votre cas, configurez MediaVolume (1) juste avant de lire votre fichier audio.

assurez-vous également que le chemin audio actuel est dirigé vers le haut-parleur et non vers l’écouteur, vous pouvez le faire en utilisant

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