Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift AVPlayer to ear speaker

Tags:

swift

avplayer

I've got a simple audio player that works great. I'm playing a remote URL MP3. My code:

@IBAction func playAudio(sender: AnyObject) {
        let url = self.productAudio
        let playerItem = AVPlayerItem( URL:NSURL( string:url ) )
        player = AVPlayer(playerItem:playerItem)
        player.
        player.rate = 1.0;
        player.play()
}

But the audio is outputed by the loud speaker. How can I play the audio through the ear speaker?

like image 949
pekpon Avatar asked Oct 20 '25 02:10

pekpon


2 Answers

Swift 5.0

let session = AVAudioSession.sharedInstance()

        do{
            try session.setCategory(.playAndRecord)
            try session.overrideOutputAudioPort(AVAudioSession.PortOverride.none)
            try session.setActive(true)
        } catch {
            print ("\(#file) - \(#function) error: \(error.localizedDescription)")
        }
like image 86
Dmih Avatar answered Oct 22 '25 16:10

Dmih


Finally I found the answer...

I had to modify my Audio Session, and override the port. This is the code before the player code:

    let session = AVAudioSession.sharedInstance()
    var error: NSError?

    session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: &error)
    session.overrideOutputAudioPort(AVAudioSessionPortOverride.None, error: &error)
    session.setActive(true, error: &error)
like image 43
pekpon Avatar answered Oct 22 '25 15:10

pekpon