【发布时间】:2020-02-29 02:39:55
【问题描述】:
我正在尝试从如下所示的网址播放 hls 直播流:“http://ip.address:port/my%20video.m3u8”。只要 url 不涉及任何空格,视频就会正常播放,否则不会播放。播放器没有记录错误,但播放器本身只是黑屏。我启用了“允许任意负载”,但仍然没有骰子。当我尝试在 Safari 中加载带有空格的网址时,视频将播放。这是我加载和播放视频的代码:
DispatchQueue.main.async {
var player = AVPlayer(url: url!)
var playerLayer: AVPlayerLayer!
playerLayer = AVPlayerLayer(player: player)
playerLayer.videoGravity = .resize
self.videoView.layer.addSublayer(playerLayer)
playerLayer.frame = self.videoView.bounds
player.play()
}
我还觉得奇怪的是,当我尝试将流发送到 AVPlayerViewController 时,播放器会弹出但不播放。这是我将它发送到视图控制器的方式:
DispatchQueue.main.async {
let player = AVPlayer(url: urlTwo)
let playerController = AVPlayerViewController()
playerController.player = player
present(playerController, animated: true) {
player.play()
}
}
【问题讨论】:
-
您是否尝试将
player和playerLayer保存为实例属性?如果你不保存它们,它们通常会在块结束时被销毁(在你调用player.play()之后)。 -
我该怎么做?
-
用新发现更新了问题。
-
请阅读有关 ARC 的内容,例如:raywenderlich.com/966538-arc-and-memory-management-in-swift
-
能否提供原网址进行测试?
标签: ios swift avplayer http-live-streaming