swift - 到底如何在 swift 4 中成功传输远程 mp3 文件?

标签 swift avfoundation nsurl

我正在使用 swift 4,无法成功将 mp3 文件传输到我的设备。没有任何错误可以引导我去任何地方。就 AVPlayers 功能而言,我缺少什么?似乎其他人已经成功地传输远程 mp3 文件。另外,服务器是https。

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

最佳答案

在类中创建 AVPlayer 变量。

let player: AVPlayer = AVPlayer()

然后创建AVPlayerItem并设置为播放器。

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

关于swift - 到底如何在 swift 4 中成功传输远程 mp3 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55327533/

相关文章:

objective-c - UITextField显示异常

ios - Swift 3.0 如何使用 TableView 单元格更改按钮标题

swift - 如何在 IBAction 方法中添加按钮目标函数

iphone - NSURL 总是返回 Nil

c++ - NSURLConnection 和 NSURLRequest 的纯 C++ 等价物

iOS Networking API 设计模式思路?

ios - 无法使用自定义 DelegateProxy 和协议(protocol)接收事件

c++ - @class AVPlayerLayer 的预期 unqualified-id

ios - 将捕获的图像精确裁剪为 AVCaptureVideoPreviewLayer 中的外观

swift - swift 是否管理我从 CVPixelBufferCreate 创建的 CVPixelBuffer 的内存?