2017-10-18 98 views
0

我有一个适用于Apple TV的UICollectionView。最多6个单元全部显示在同一个屏幕上。每个单元格都有不同的循环播放视频。但是,我发现不止两个视频导致非常波涛汹涌的视频播放。如何提高播放视频的性能?UICollectionView视频性能

class ExerciseCell: UICollectionViewCell { 

@IBOutlet private weak var stationNumberLabel: UILabel! 
@IBOutlet private weak var exerciseNameLabel: UILabel! 

private var looperPlayer:AVPlayerLooper! 

var exercise:ExerciseData! { 
    didSet { 
     self.stationNumberLabel.text = exercise.stationNumber 
     self.exerciseNameLabel.text = exercise.exerciseName 
     playVideo() 
    } 
} 

private func playVideo() 
{ 
    //if let videoURL = URL(string:self.exercise.videoURL) 
    if let videoPath = Bundle.main.path(forResource: self.exercise.videoName, ofType: "mp4") 
    { 
     //let playerItem = AVPlayerItem(url: videoURL) 
     let playerItem = AVPlayerItem(url: URL(fileURLWithPath: videoPath)) 
     let queuePlayer = AVQueuePlayer(playerItem: playerItem) 
     let playerLayer = AVPlayerLayer(player: queuePlayer) 

     playerLayer.frame = self.layer.bounds 
     playerLayer.videoGravity = .resize 
     playerLayer.player = queuePlayer 

     self.looperPlayer = AVPlayerLooper(player: queuePlayer, templateItem: playerItem) 
     self.layer.insertSublayer(playerLayer, at: 0) 

     queuePlayer.volume = 0.0 
     queuePlayer.play() 
    } 
    else 
    { 
     self.layer.sublayers?.forEach { $0.removeFromSuperlayer() } 
    } 
}} 

以上是从UICollectionViewController

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
{ 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! ExerciseCell 

    cell.exercise = self.exercisesArray[indexPath.row] 

    return cell 
} 

回答

0

问题是由源视频这是1920X1080的分辨率造成的调用。降低分辨率解决了问题。