如何在 Swift 中为广播直播服务实施 HLS
How to implement a HLS for Radio Live Streaming service in Swift
我正在尝试使用 AVPlayer 制作广播直播服务。
我的url是
http://player.absoluteradio.co.uk/tunein.php?i=a664.aac
但是 AVPlayer 不播放它...我知道 url 不提供音频流,但它 returns 在第一个 [=20] 中可播放 URL =] 响应。我认为 AVPlayer 要么会处理请求,要么会让我拦截 headers,但事实并非如此。
有人知道怎么实现吗?
我尝试用不同的方法播放 url,但我发现了一些让 AVPlayer 工作的东西,但仍然不知道幕后发生了什么...
我的第一个方法是初始化 AVPlayer 并设置 AVURLAsset 资源加载器委托,但是,由于 Reserved/Standard 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>
成功了!
我正在尝试使用 AVPlayer 制作广播直播服务。
我的url是
http://player.absoluteradio.co.uk/tunein.php?i=a664.aac
但是 AVPlayer 不播放它...我知道 url 不提供音频流,但它 returns 在第一个 [=20] 中可播放 URL =] 响应。我认为 AVPlayer 要么会处理请求,要么会让我拦截 headers,但事实并非如此。
有人知道怎么实现吗?
我尝试用不同的方法播放 url,但我发现了一些让 AVPlayer 工作的东西,但仍然不知道幕后发生了什么...
我的第一个方法是初始化 AVPlayer 并设置 AVURLAsset 资源加载器委托,但是,由于 Reserved/Standard 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>
成功了!