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

时间:2017-03-31 10:41:42

标签: ios swift3 avaudioplayer audio-streaming

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

2 个答案:

答案 0 :(得分:1)

Apple为音频/视频流提供HTTP直播流(HLS): https://developer.apple.com/streaming/

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

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

在这里也可以在HLS上查看这个答案,你将全面了解:HTTP LIve Streaming

用于播放的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()
    }
}

答案 1 :(得分:0)

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