xcode – 使用Swift通过iPhone扬声器强制播放音频文件

前端之家收集整理的这篇文章主要介绍了xcode – 使用Swift通过iPhone扬声器强制播放音频文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序记录,然后播放音频文件.目前,通过耳机扬声器播放音频.有人能告诉我 Swift如何处理编码以强制音频输出扬声器吗?

下面是我用来播放音频文件的一个实例:

@IBAction func playAu@R_404_410@Vader(sender: UIButton) {
    playAu@R_404_410@WithVariablePitch(-1000)
    }

    func playAu@R_404_410@WithVariablePitch(pitch: Float){
    au@R_404_410@Player.stop()
    au@R_404_410@Engine.stop()
    au@R_404_410@Engine.reset()

        var au@R_404_410@PlayerNode = AVAu@R_404_410@PlayerNode()
        au@R_404_410@Engine.attachNode(au@R_404_410@PlayerNode)

        var changePitchEffect = AVAu@R_404_410@UnitTimePitch()
        changePitchEffect.pitch = pitch
        au@R_404_410@Engine.attachNode(changePitchEffect)

        au@R_404_410@Engine.connect(au@R_404_410@PlayerNode,to: changePitchEffect,format: nil)
        au@R_404_410@Engine.connect(changePitchEffect,to: au@R_404_410@Engine.outputNode,format: nil)

        au@R_404_410@PlayerNode.scheduleFile(au@R_404_410@File,atTime: nil,completionHandler: nil)
        au@R_404_410@Engine.startAndReturnError(nil)

        au@R_404_410@PlayerNode.play()

}

   override func viewDidLoad() {

    super.viewDidLoad()

    au@R_404_410@Player = AVAu@R_404_410@Player(contentsOfURL:receivedAu@R_404_410@.filePathURL,error: nil)
    au@R_404_410@Player.enableRate = true
    au@R_404_410@Engine = AVAu@R_404_410@Engine()
    au@R_404_410@File = AVAu@R_404_410@File(forReading:receivedAu@R_404_410@.filePathURL,error: nil)


}

解决方法

编辑2017年7月:请参阅Husam对Swift 2.0解决方案的回答.

从Swift 1.2开始,您使用overrideOutputAu@R_404_410@Port和AVAu@R_404_410@SessionPortOverride.它可以通过这样的方式实现:

if !session.overrideOutputAu@R_404_410@Port(AVAu@R_404_410@SessionPortOverride.Speaker,error:&error) {
   println("could not set output to speaker")
   if let e = error {
      println(e.localizedDescription)
   }
}

我正在开发一个现在使用它的应用程序,我有一个名为setSessionPlayandRecord的函数,它看起来像:

func setSessionPlayAndRecord() {
    let session:AVAu@R_404_410@Session = AVAu@R_404_410@Session.sharedInstance()
    var error: NSError?
    if !session.setCategory(AVAu@R_404_410@SessionCategoryPlayAndRecord,error:&error) {
        println("could not set session category")
        if let e = error {
            println(e.localizedDescription)
        }
    }
    if !session.overrideOutputAu@R_404_410@Port(AVAu@R_404_410@SessionPortOverride.Speaker,error:&error) {
        println("could not set output to speaker")
        if let e = error {
            println(e.localizedDescription)
        }
    }
    if !session.setActive(true,error: &error) {
        println("could not make session active")
        if let e = error {
            println(e.localizedDescription)
        }
    }
}
原文链接:https://www.f2er.com/iOS/333891.html

猜你在找的iOS相关文章