Я использую проект 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 Code, также внутри ячейки, не выдает никаких ошибок или сбоев, компилятор говорит, что 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, в настоящее время проводится дальнейшее расследование.