gpt4 book ai didi

ios - AVPlayer 不播放,图层不显示

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:58:24 25 4
gpt4 key购买 nike

我正在使用一个 Objective-C 项目作为一个非常相似的 Swift 应用程序的引用。基本上,视频被上传到 Firebase,下载 URL 被保存到“Post”对象,并在检索时在 UITableViewCell 中播放。在 Objective-C 项目(也使用 Firebase)中,它工作得很好,但我在 Swift 中遇到了一些麻烦。

Objective-C 代码,就像我说的,在单元格内,运行完美。

- (void)playVideoWithURL:(NSURL *)url {

self.videoPlayer = [[AVPlayer alloc]initWithURL:url];
AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:self.videoPlayer];
layer.frame = self.videoView.bounds;
[layer setVideoGravity:AVLayerVideoGravityResizeAspect];
[self.videoView.layer addSublayer:layer];

[self.videoPlayer play];

}

同样在单元格内的 Swift 代码不会抛出任何错误或崩溃,编译器说 URL 以及播放器和层都存在(其框架不是 CGRectZero,也检查过)。

@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()

}

为简单起见,我暂时不会发布任何 Firebase 代码,因为它在 Objective-C 项目中都能正常工作,而且下载 URL 也能在 Swift 项目中成功检索到,这让我相信它与此无关问题。

有什么想法吗?这真让我抓狂。谢谢!

更新:

AVPlayer 实际上不是问题,因为它适用于测试视频。问题出在 Firebase 上,目前正在进一步调查。

最佳答案

尝试使用播放器项目初始化您的播放器。

let playerItem = AVPlayerItem(URL: url)
self.videoPlayer = AVPlayer(playerItem: playerItem)

另外,您应该检查播放器的状态以确定它何时可以使用 KVO 播放。

参见 Knowing when AVPlayer object is ready to play .

如果播放器的状态为 failed,则该错误在 playerItem.error? 中可用。检查以帮助确定问题。

关于ios - AVPlayer 不播放,图层不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38928312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com