2

AVPLayer を使用して、UITableView でビデオを再生しています。ビデオは正常に再生されますが、最初にビデオを再生すると、音は聞こえますが画面が真っ暗になります。ビデオの 5 ~ 6 秒後にビデオが表示されます。私は次のコードを使用しています:

 AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
playerItem = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *avPlayer = [AVPlayer playerWithPlayerItem:playerItem];
self.avPlayer = avPlayer;

__weak CLBAVPlayer *weakSelf = self;
[self.avPlayer addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(1.0 / 60.0, NSEC_PER_SEC)
                                            queue:nil
                                       usingBlock:^(CMTime time) {
                                           [weakSelf progress];
                                       }];

self.layer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer];
self.avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;

問題を理解するのを手伝ってください。

4

1 に答える 1

3

これに対する答えを得ました。実際の問題は、レイヤーを取得してサブレイヤーとして追加したときに、それがメイン キューにないことでした。dispatch_asyncメインキューで使用すると、問題が解決しました。

于 2016-04-25T12:10:51.430 に答える