Каким образом вы успешно транслируете удаленный mp3-файл в swift 4? - PullRequest
0 голосов
/ 24 марта 2019

Я работаю с swift 4 и не могу успешно передать файл mp3 на мое устройство. Там нет ошибок, чтобы привести меня никуда. Чего мне не хватает в возможностях AVPlayers? Кажется, что другие имели успех потоковой передачи удаленных mp3-файлов. Кроме того, сервер https.

let newUrl = NSURL(string: urlMain)
let test = AVPlayer(url: newUrl as! URL)
test.play()

1 Ответ

0 голосов
/ 24 марта 2019

Создайте переменную AVPlayer для вашего класса.

let player: AVPlayer = AVPlayer()

Затем создайте AVPlayerItem и установите его в player.

func prepareToPlayAudio() {
    let url = newUrl
    asset = AVAsset(url: url)

    let assetKeys = ["playable", "hasProtectedContent"]

    playerItem = AVPlayerItem(asset: asset,
                              automaticallyLoadedAssetKeys: assetKeys)

    playerItem.addObserver(self, forKeyPath: #keyPath(AVPlayerItem.status), options: [.old, .new], context: &playerItemContext)

    player = AVPlayer(playerItem: playerItem)
}

Затем добавьте наблюдателей для отслеживания состояния воспроизводимого элемента.

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    guard context == &playerItemContext else {
        super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
        return
    }

    if keyPath == #keyPath(AVPlayerItem.status) {
        let status: AVPlayerItemStatus

        if let statusNumber = change?[.newKey] as? NSNumber {
            status = AVPlayerItemStatus(rawValue: statusNumber.intValue)!
        } else {
            status = .unknown
        }

        switch status {
        case .readyToPlay:
        // Ready to play.
        case .failed:
        // Player item error.
        case .unknown:
            // Item is not ready.
        }
    }
}
...