在UITableViewCell或UICollectionViewCell iOS

时间:2017-03-19 18:54:29

标签: ios swift video

Stackoverflow中有很多关于在单元格中播放视频的内容,每个人都会感到困惑,特别是大多数问题都没有解决,看起来每个开发人员都放弃了。

所以我想创建一个新的问题,哪里会有最新的答案。

目的:

当用户点击单元格时,在UITableViewCell或UICollectionViewCell中播放视频(是的,这是简化版本,这不是关于自动播放)。

解决方案:

  • 我想每个人都同意我们应该使用AVPlayer而不是弃用MPMoviePlayerController
  • Cell应该有一个可以分配AVPlayer的层,所以在创建单元格的代码中我添加了这段代码:

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代码也将受到赞赏。

0 个答案:

没有答案