菜鸟教程小白 发表于 2022-12-11 17:14:56

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]
查看完整版本: ios - AVPlayer 不播放和图层不显示