ios - AVPlayer 不播放和图层不显示
<p><p>我正在使用一个 Objective-C 项目作为一个非常相似的 Swift 应用程序的引用。基本上,视频会上传到 Firebase,下载 URL 会保存到“Post”对象并在检索时在 UITableViewCell 中播放。在 Objective-C 项目(也使用 Firebase)中,它运行良好,但我在 Swift 中遇到了一些麻烦。 </p>
<p>Objective-C 代码,在单元格内,就像我说的,完美运行。 </p>
<pre><code>- (void)playVideoWithURL:(NSURL *)url {
self.videoPlayer = [initWithURL:url];
AVPlayerLayer *layer = ;
layer.frame = self.videoView.bounds;
;
;
;
}
</code></pre>
<p>同样在单元格内的 Swift 代码不会抛出任何错误或崩溃,编译器说 URL 存在以及播放器和层(其帧 <em>not</em> CGRectZero,也检查过)。</p>
<pre><code>@IBOutlet var usernameLabel: UILabel!
@IBOutlet var captionLabel: UILabel!
@IBOutlet var avPlayerView: UIView!
var videoPlayer : AVPlayer!
func playVideoWithURL(url: NSURL) {
self.videoPlayer = AVPlayer(URL: url)
let layer = AVPlayerLayer(player: self.videoPlayer)
layer.frame = avPlayerView.bounds
layer.videoGravity = AVLayerVideoGravityResizeAspect
avPlayerView.layer.addSublayer(layer)
videoPlayer.play()
}
</code></pre>
<p>为了简单起见,我暂时不会发布任何 Firebase 代码,因为它们都可以在 Objective-C 项目中运行,并且下载 url 也可以在 Swift 中成功检索,这让我相信它无关紧要与问题。</p>
<p>有什么想法吗?这真让我抓狂。谢谢!</p>
<p>更新:</p>
<p>AVPlayer 实际上不是问题,因为它适用于测试视频。问题出在 Firebase,目前正在进一步调查。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>尝试使用播放器项目初始化您的播放器。</p>
<pre><code>let playerItem = AVPlayerItem(URL: url)
self.videoPlayer = AVPlayer(playerItem: playerItem)
</code></pre>
<hr/>
<p>此外,您应该检查播放器的状态,以确定它何时可以使用 KVO 播放。</p>
<p>见 <a href="https://stackoverflow.com/questions/5401437/knowing-when-avplayer-object-is-ready-to-play" rel="noreferrer noopener nofollow">Knowing when AVPlayer object is ready to play</a> .</p>
<p>如果播放器的状态为 <code>failed</code>,则错误在 <code>playerItem.error?</code> 中可用。检查以帮助确定问题。</p></p>
<p style="font-size: 20px;">关于ios - AVPlayer 不播放和图层不显示,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/38928312/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/38928312/
</a>
</p>
页:
[1]