【问题标题】:How to implement a HLS for Radio Live Streaming service in Swift如何在 Swift 中为 Radio Live Streaming 服务实现 HLS
【发布时间】:2018-10-15 11:19:01
【问题描述】:

我正在尝试使用 AVPlayer 制作广播生活流媒体服务。

我的网址是

http://player.absoluteradio.co.uk/tunein.php?i=a664.aac

但是 AVPlayer 不播放它...我知道该 url 不提供音频流,但它在第一个标头响应中返回一个可播放的 URL。我认为 AVPlayer 要么处理请求,要么让我拦截标头,但它没有。

有人知道如何实现吗?

【问题讨论】:

    标签: swift avfoundation avkit


    【解决方案1】:

    我尝试用不同的方法播放 url,但我发现了一些让 AVPlayer 工作的东西,但仍然不知道幕后发生了什么......

    我的第一种方法是初始化 AVPlayer 并设置 AVURLAsset 资源加载器委托,但是,由于保留/标准 url 方案不会触发委托,我陷入了死胡同……

    其次,在这样实现 AVPlayer 之后:

    class ViewController: UIViewController, AVAssetResourceLoaderDelegate {
    
        let urlFile = URL(string:"http://player.absoluteradio.co.uk/tunein.php?i=a664.aac")!
    
        private var avPlayer:AVPlayer!
        private var avAudioSession:AVAudioSession = AVAudioSession.sharedInstance()
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            try! avAudioSession.setCategory(.playback, mode: .default, options: [])
            try! avAudioSession.setActive(true)
    
            let audioURLAsset = AVURLAsset(url: urlFile)
            //audioURLAsset.resourceLoader.setDelegate(self, queue:DispatchQueue.init(label: "MY QUEUE"))
            avPlayer = AVPlayer(playerItem: AVPlayerItem(asset: audioURLAsset))
    
            avPlayer.play()
    
        }
    
    }
    

    我允许在我的 info.plist 中任意加载

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    

    它成功了!

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 2014-11-22
      • 2017-05-23
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 2016-11-06
      • 2015-05-27
      • 1970-01-01
      相关资源
      最近更新 更多