ios - 如何在后台 iOS Swift 中播放实时流中的音频

标签 ios swift avfoundation mpmovieplayercontroller background-audio

嗨,我正在使用 MPMoviePlayerController 播放直播中的 mp3,但当应用程序在后台运行时它无法播放。并在手机锁定时停止播放。请告诉我如何在后台和手机锁定时播放实时流媒体音频。请尽快给我建议。

我正在使用 MPMoviePlayerController 而不是 AvAudioPlayer。因为AvAudioPlayer 不支持网络流reference.

注意:

语言 - Swift 2.0

更新 1

最后用 AVPlayer 编码。但它不播放来自 url This mp3 need to play in my app. 的音频我的代码是

override func viewDidLoad() {
    audioUrl = NSURL(string: "http://www.raagam.co/4256s5f46ht4he4r6/2016/Achcham%20Enbathu%20Madamaiyada/Thalli%20Pogathey.mp3")!
    let avAsset = AVURLAsset(URL: audioUrl)
    let avPlayerItem = AVPlayerItem(asset: avAsset)

    avPlayer = AVPlayer(playerItem: avPlayerItem)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.playerItemDidReachEnd), name: AVPlayerItemDidPlayToEndTimeNotification, object: avPlayer.currentItem)
    avPlayer.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions.New, context: nil)
    super.viewDidLoad()
}

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {

    if (object!.isEqual(avPlayer) && keyPath=="status"){
        print("Observer")
        if avPlayer.status == AVPlayerStatus.ReadyToPlay{
            print("ReadyToPlay")
            avPlayer.play();
        }else if avPlayer.status == AVPlayerStatus.Failed{
            print("Failed")
        }else if avPlayer.status == AVPlayerStatus.Unknown{
            print("Unknown")
        }
    }
}

func playerItemDidReachEnd(){
        print("Finished")
}

我使用来自 here 的代码

当我运行这段代码时。它打印ReadyToPlay。但是 mp3 没有播放。

最佳答案

您可以通过在“项目”>“功能” Pane 中启用背景音频来做到这一点:

Capabilities pane in Xcode

然后点击播放。

但不是 MPMoviePlayerControllerAVAudioPlayer,而是使用 AVPlayer

关于ios - 如何在后台 iOS Swift 中播放实时流中的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38136471/

相关文章:

ios - 如何在iOS中用动画隐藏UITableView的删除按钮?

iphone - 将短信从 iPhone 导入 iPhone 应用程序

iOS swift 4.2 如何拒绝或禁止放入 UICollectionView

objective-c - AVCaptureDevice,以特定采样频率捕获WAV音频

ios - AVAssetResourceLoaderDelegate 方法在设备上不起作用

ios - 尝试呈现其 View 不在窗口层次结构中的 UIViewController

ios - 对可编辑文本禁用某些 UITextView 操作

ios - 集成 SKMaps.Framework 时出现链接错误

objective-c - AVCaptureVideoPreviewLayer 不适用于 renderInContext

iphone - 核心位置第一点无效