【发布时间】:2023-07-27 14:26:01
【问题描述】:
我正在尝试在 iOS 中进行直播,所以步骤如下 -
-
初始化播放器
player = AVPlayer() player.rate = 1.0 player.actionAtItemEnd = AVPlayerActionAtItemEnd.none -
设置播放器层
playerLayer = AVPlayerLayer(player: player) playerLayer.frame = self.bounds playerLayer.backgroundColor = UIColor.clear.cgColor playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill if let sublayers = self.layer.sublayers { for layer in sublayers { layer.removeFromSuperlayer() } } self.layer.addSublayer(playerLayer) -
设置播放器项目
let avAsset = AVURLAsset(url: streamingUrl) playerItem = AVPlayerItem(asset: avAsset) -
替换播放器中的currentItem并播放
self.player?.replaceCurrentItem(with: self.playerItem) self.player?.play()
如果我在流式传输开始后加载播放器,我的视频播放非常好,但如果我在从后端开始实时流式传输之前加载播放器,然后在一段时间后开始流式传输,它不播放视频。
我尝试将观察者添加到 playerItem 的状态属性,但在上述条件下也不会改变,只有在流式传输开始后加载播放器并且一切正常时才会改变。所以我的问题是为什么我的 playerItem 没有得到状态更改?我错过了什么吗?请帮忙。提前致谢。
【问题讨论】:
-
检查url是否可播放
AVAsset(url: URL).isPlayable,在你的情况下,你可以播放if avAsset.isPlayable { playerItem = AVPlayerItem(asset: avAsset); ... } -
其他情况怎么办?如果无法播放,如何处理?
标签: ios swift avplayer live-streaming hlsl