2017-01-24 3 views
2

にスクロール性能を持っている私は、コミュニティの他の回答を探求し、これを試してみました -UICollectionViewCellでビデオを再生する。ビデオは細かい演奏が、collectionView

player = AVPlayer() 
    player.volume = 0.0 
    player.actionAtItemEnd = AVPlayerActionAtItemEnd.None 
    addPlayerLayer() 

    let asset = AVAsset.init(URL: videoURL) 
    asset.loadValuesAsynchronouslyForKeys(["duration", "playable"]) { 

     dispatch_async(dispatch_get_main_queue(), {() -> Void in 
       let item = AVPlayerItem.init(asset: asset) 
       self.player.replaceCurrentItemWithPlayerItem(item) 
       self.player.play() 
     }) 
    } 

しかし、低速なネットワークがあるたびにcollectionViewをスクロールしながら、顕著な遅れ/しゃっくりがあります。私は何か間違っているのですか?助けてください

+0

可能な複製(http://stackoverflow.com/questions/33928536/avplayerviewcontroller-in-uicollectionviewcell-bug) –

+0

それが重複していない、その程度ビデオを再生しながらcollectionViewのパフォーマンスをスクロールします。 –

+0

どうやってやったのですか? –

答えて

1

FacebookのAsyncDisplayKit(FacebookとInstagramフィードの背後にあるエンジン)を見ると、AVideoNodeを使って背景スレッドの大部分をレンダリングできます。

OR:[?UICollectionViewCellのバグでAVPlayerViewController]の

player = AVPlayer() 
player.volume = 0.0 
player.actionAtItemEnd = AVPlayerActionAtItemEnd.None 
addPlayerLayer() 
dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0), {} 
    let asset = AVAsset.init(URL: videoURL) 
    asset.loadValuesAsynchronouslyForKeys(["duration", "playable"]) { 
     dispatch_async(dispatch_get_main_queue(), {() -> Void in 
       let item = AVPlayerItem.init(asset: asset) 
       self.player.replaceCurrentItemWithPlayerItem(item) 
       self.player.play() 
     }) 
    } 
}) 
+0

私はあなたのコードとFacebookのライブラリの両方を試しましたが、どれもスクロールラグの問題を解決しません。 –

関連する問題