Stackoverflow中有很多关于在单元格中播放视频的内容,每个人都会感到困惑,特别是大多数问题都没有解决,看起来每个开发人员都放弃了。
所以我想创建一个新的问题,哪里会有最新的答案。
目的:
当用户点击单元格时,在UITableViewCell或UICollectionViewCell中播放视频(是的,这是简化版本,这不是关于自动播放)。
解决方案:
AVPlayer
而不是弃用MPMoviePlayerController
。VideoCell.swift
let layer = AVPlayerLayer()
layer.backgroundColor = UIColor.clear.cgColor
layer.videoGravity = AVLayerVideoGravityResizeAspectFill
ViewController.swift
cell.playerLayer.player = player
player.replaceCurrentItem(with: AVPlayerItem(asset: asset))
player.play()
其中,玩家是AVPlayer
的全局实例,资产AVAsset
已使用视频网址初始化。
它可以正常工作,但AVPlayer
需要时间来下载信息并缓冲视频的某些部分,而用户获得的是延迟。因此,我们可以考虑一种解决方案,即首先下载视频并在用户点按小区时在本地播放。
问题: 下载数据源中的每个视频然后在本地播放是否真的很好?我们什么时候应该从设备上删除它? Facebook和Instagram看起来他们首先只下载部分视频,有谁可以分享自己的经验?
Objective-C代码也将受到赞赏。