我将30秒的视频文件存储在Firebase存储中,并在实时数据库中使用url字符串。如果我在应用程序中循环播放视频,每次循环播放都会消耗额外的数据吗?如果答案是肯定的,有什么办法可以像缓存图像一样缓存视频?
这是播放视频:
if let url = URL(string: videoUrl) {
player = AVPlayer(url: url)
playerLayer = AVPlayerLayer(player: player)
playerLayer?.frame = frame
bubbleView.layer.addSublayer(playerLayer!)
playerLayer?.videoGravity = AVLayerVideoGravity.resizeAspect
player?.play()
}
我使用通知来循环:
@objc private func playItemDidPlayToEnd(nitification: Notification) {
playerLayer?.videoGravity = AVLayerVideoGravity.resizeAspect
player?.seek(to: CMTime.zero)
player?.play()
}
Firebase Storage收取您从中下载的数据量。
因此,如果您使用的库/播放器在每次播放/循环播放视频时都下载数据,则您需要为此付费。
另一方面,如果库/播放器在第一次下载数据时在本地缓存数据,然后在本地缓存中播放数据,则只需支付一次。
据我发现,缓存似乎不是AVPlayer
的默认行为,但是有一些不错的articles and libraries on how to enable caching。