我有一台苹果电视的UICollectionView。最多有6个单元都显示在同一屏幕上。每个单元有一个不同的循环视频播放。然而,我发现超过2个视频导致非常不稳定的视频播放。如何提高播放视频的性能?
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
}发布于 2017-10-20 19:33:22
这个问题是由1920X1080的原始视频的分辨率引起的。降低分辨率解决了这个问题。
https://stackoverflow.com/questions/46802928
复制相似问题