我正在尝试从Firebase存储中下载视频,并将这些视频放入“表视图/集合视图单元格”中并使用循环自动播放。但是,当视频下载时,它不会显示整个视频(有时),并且每次滚动表格视图时都会重新下载数据。如何正确下载视频并在tableView中播放它们而不是每次都下载它们?
这是我从单元类中的firebase存储中下载视频的地方。
didSet {
setupProfileImage()
self.nameLabel.text = user?.username
guard let videoString = post?.videoURL else { return }
guard let videoTitle = post?.videoTitle else { return }
guard let videoURL = URL(string: videoString) else { return }
self.videoTitle.text = videoTitle
let storageRef = Storage.storage().reference(forURL: videoString)
storageRef.getMetadata { (metadata, err) in
if let error = err {
print("Error downloading metadata: \(error)")
return
}
DispatchQueue.main.async {
guard let downloadUrl = metadata?.downloadURL()?.absoluteURL else { return }
let asset = AVURLAsset(url: downloadUrl)
let item = AVPlayerItem(asset: asset)
self.player = AVPlayer(playerItem: item)
self.videoView.layer.addSublayer(self.videoPlayerLayer)
self.videoTitle.text = videoTitle
self.videoPlayerLayer.player = self.player
self.videoPlayerLayer.frame = CGRect(x: 0, y: 0, width: self.videoView.frame.width, height: self.videoView.frame.width)
self.player?.play()
}
NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: self.player?.currentItem, queue: .main) { _ in
self.player?.seek(to: kCMTimeZero)
self.player?.play()
}
}
}