我正在使用一個Objective-C項目作爲一個非常相似的Swift應用程序的參考。基本上,視頻上傳到Firebase,下載URL保存到「Post」對象,並在檢索時播放到UITableViewCell中。在Objective-C項目(也使用Firebase)中,它完美地工作,但我在Swift中遇到了一些麻煩。如我所說,在單元格內部的Objective-C代碼完美地工作。AVPlayer不播放和圖層不顯示
- (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];
}
銀行代碼,也在裏面細胞,不會引發任何錯誤或崩潰,編譯器說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()
}
爲了簡單起見,我將不會發布任何火力地堡代碼,只是還沒有,因爲它在Objective-C的項目,所有的作品的下載網址在斯威夫特一個成功檢索爲好,導致我相信它與這個問題無關。
任何想法?這真讓我抓狂。謝謝!
UPDATE:
AVPlayer實際上不是問題,因爲它與測試視頻作品。問題在於Firebase,目前正在進一步調查。
不,沒什麼。我起初以爲是同樣的事情,但我已經初始化AVPlayer沒有一個項目,只是網址之前,所以它必須是別的東西......謝謝 – Echizzle
我添加了一些額外的東西來嘗試我的答案來幫助您調試問題。您應該報告玩家狀態以及您收到的任何錯誤。 – Daniel
謝謝,錯誤爲零且存在該項目,顯示Firebase下載網址,就像其他項目一樣工作。但我會考慮KVO。我只是想知道爲什麼Objective-C代碼可以很好地工作,但Swift代碼卻沒有。我知道兩種語言的工作方式都有所不同,但仍然存在 – Echizzle