哪些 Native iOS API 可用于在我的应用程序中流式传输和播放音频数据?

Which Native iOS API can be used to stream and play audio data in my application?

我有兴趣构建一个类似于 wynk.The 应用程序的 iOS 应用程序,该应用程序将包含一个歌曲列表。单击任何选项后,它将开始从服务器流式传输该音乐文件。我不想使用任何第三方 API。任何帮助/建议都会有很大帮助。我正在使用 xCode 8.0 和 swift 3.

Apple 为 audio/video 流式传输提供 HTTP 实时流式传输 (HLS): https://developer.apple.com/streaming/

在流媒体会话开始时,客户端下载一个主 .m3u8 播放列表文件,其中包含可用的各种子流的元数据。然后根据设备类型、分辨率、数据速率、大小等预定义因素,决定从可用媒体文件中下载什么

Apple 提供了有关如何播放和保留远程服务器上托管的 HTTP 直播流的示例代码: https://developer.apple.com/library/content/samplecode/HLSCatalog/Listings/HLSCatalog_AssetListTableViewCell_swift.html#//apple_ref/doc/uid/TP40017320-HLSCatalog_AssetListTableViewCell_swift-DontLinkElementID_4

还可以在此处查看 HLS 上的此答案,您将了解全貌:

用于播放的 AVFoundation https://developer.apple.com/av-foundation/

import AVFoundation
import UIKit

class ViewController: UIViewController {

    override func viewDidAppear(animated: Bool) {
        let videoURL = NSURL(string: "your_video_url")
        guard let player = AVPlayer(URL: videoURL) else { return }
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.frame = self.view.bounds
        self.view.layer.addSublayer(playerLayer)
        player.play()
    }
}

您可以使用 AVPlayer,这是一个用于管理媒体资产的播放和计时的控制器对象。它提供了接口来控制播放器的传输行为,例如播放、暂停、更改播放速率以及在媒体时间轴内寻找各个时间点的能力。您可以使用 AVPlayer 播放本地和远程基于文件的媒体,例如 QuickTime 电影和 MP3 音频文件,以及使用 HTTP Live Streaming 提供的视听媒体。