2017-10-18 28 views
0

J'ai une UICollectionView pour Apple TV. Il y a au plus 6 cellules qui s'affichent toutes sur le même écran. Chaque cellule a une lecture vidéo en boucle différente. Cependant, je trouve que plus de 2 vidéos causant une lecture vidéo très agitée. Comment puis-je améliorer les performances des vidéos en cours de lecture?UICollectionView Video Performance

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() } 
    } 
}} 

Ce qui précède est appelé de la 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 
} 

Répondre

0

La question a été causée par la résolution des vidéos source qui étaient 1920x1080. Diminuer la résolution a résolu le problème.