Ios 在tableView中有多个视频?

Ios 在tableView中有多个视频?,ios,objective-c,swift,avplayer,Ios,Objective C,Swift,Avplayer,我有一个包含多个视频的UITableView。我知道在UIView中只能有一个MPMoviePlayerController,所以我选择了AVPlayer选项,但有两个问题: 1.当我为特定单元格更改播放器项目时,所有单元格中的项目都会更改。我想有不同的视频在不同的细胞。以下是我每个单元格的代码: let urlFromParse = NSURL(string: lVideo.url!) var asset = AVURLAsset(URL: u

我有一个包含多个视频的UITableView。我知道在UIView中只能有一个MPMoviePlayerController,所以我选择了AVPlayer选项,但有两个问题: 1.当我为特定单元格更改播放器项目时,所有单元格中的项目都会更改。我想有不同的视频在不同的细胞。以下是我每个单元格的代码:

            let urlFromParse = NSURL(string: lVideo.url!)

            var asset = AVURLAsset(URL: urlFromParse, options: nil)

            var playerItem = AVPlayerItem(asset: asset)

            self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer

            var layer = AVPlayerLayer(player: self.moviePlayerSunday)

            layer.frame = cell.addVideoView.bounds

            layer.backgroundColor = UIColor.blackColor().CGColor

            layer.videoGravity = AVLayerVideoGravityResizeAspectFill

            layer.needsDisplayOnBoundsChange = true

            self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None

            cell.addVideoView.layer.addSublayer(layer)
  • 我的第二个问题是,播放器没有播放、暂停、全屏等按钮

                let urlFromParse = NSURL(string: lVideo.url!)
    
                var asset = AVURLAsset(URL: urlFromParse, options: nil)
    
                var playerItem = AVPlayerItem(asset: asset)
    
                self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer
    
                var layer = AVPlayerLayer(player: self.moviePlayerSunday)
    
                layer.frame = cell.addVideoView.bounds
    
                layer.backgroundColor = UIColor.blackColor().CGColor
    
                layer.videoGravity = AVLayerVideoGravityResizeAspectFill
    
                layer.needsDisplayOnBoundsChange = true
    
                self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None
    
                cell.addVideoView.layer.addSublayer(layer)
    
    我将感谢任何帮助。谢谢大家!

  •             let urlFromParse = NSURL(string: lVideo.url!)
    
                var asset = AVURLAsset(URL: urlFromParse, options: nil)
    
                var playerItem = AVPlayerItem(asset: asset)
    
                self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer
    
                var layer = AVPlayerLayer(player: self.moviePlayerSunday)
    
                layer.frame = cell.addVideoView.bounds
    
                layer.backgroundColor = UIColor.blackColor().CGColor
    
                layer.videoGravity = AVLayerVideoGravityResizeAspectFill
    
                layer.needsDisplayOnBoundsChange = true
    
                self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None
    
                cell.addVideoView.layer.addSublayer(layer)
    
    关于你的第一点: 如果我没记错的话,您正在使用self.moviePlayerSunday来显示您的视频。然后对所有单元格使用相同的player实例。 为每个需要有自己播放器的单元格实例化一个新的

                let urlFromParse = NSURL(string: lVideo.url!)
    
                var asset = AVURLAsset(URL: urlFromParse, options: nil)
    
                var playerItem = AVPlayerItem(asset: asset)
    
                self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer
    
                var layer = AVPlayerLayer(player: self.moviePlayerSunday)
    
                layer.frame = cell.addVideoView.bounds
    
                layer.backgroundColor = UIColor.blackColor().CGColor
    
                layer.videoGravity = AVLayerVideoGravityResizeAspectFill
    
                layer.needsDisplayOnBoundsChange = true
    
                self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None
    
                cell.addVideoView.layer.addSublayer(layer)
    
    关于你的第二点:
    AVPlayer直接播放视频。您必须创建播放/暂停/等。。按钮您自己

    请发布您的单元格创建代码。是的,我使用的是相同的代码,因为当我为单元格内的每个单元格创建一个新代码时,它甚至没有显示出来。
                let urlFromParse = NSURL(string: lVideo.url!)
    
                var asset = AVURLAsset(URL: urlFromParse, options: nil)
    
                var playerItem = AVPlayerItem(asset: asset)
    
                self.moviePlayerSunday = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer
    
                var layer = AVPlayerLayer(player: self.moviePlayerSunday)
    
                layer.frame = cell.addVideoView.bounds
    
                layer.backgroundColor = UIColor.blackColor().CGColor
    
                layer.videoGravity = AVLayerVideoGravityResizeAspectFill
    
                layer.needsDisplayOnBoundsChange = true
    
                self.moviePlayerSunday.actionAtItemEnd = AVPlayerActionAtItemEnd.None
    
                cell.addVideoView.layer.addSublayer(layer)