2017-07-31 21 views
0

私はplayerItemのリストの最初の秒をプリロードして、最初の遅延を防ぐようにしています。 私はpreferredForwardBufferDurationを使ってプリロードしています。preload playerItemのリストのHLSストリーミング

  1. 私はそれが約1〜3秒(偉大な無線LAN)用を取ることに気づいた:私は2つの質問がある

    //setup repload in advance 
    VURLAsset *asset = [AVURLAsset assetWithURL:m3u8URL]; 
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset]; 
    playerItem.preferredForwardBufferDuration = 1; 
    AVPlayer *player = [[AVPlayer alloc] init]; 
    _playerLayer.player = player; 
    player.replaceCurrentItemWithPlayerItem(playerItem) 
    

    // as soon as playback begins, reset it to 0 _item.preferredForwardBufferDuration = 0;

    :ここ

    は、プリロードのセットアップのためのスニペットです設定後、playerItemステータスがAVPlayerItemStatusUnknownからAVPlayerItemStatusReadyToPlayに変更されます。したがって、プレロード設定後に1秒以内にタップして再生すると、状態が準備完了に変わるまで待たなければなりません。なぜそれが多くの時間を費やしているのか、そして状態変化の原因は何ですか?素晴らしいWi-Fiの下で最初の1秒を先読みしてもそれほど長い時間はかかりません。
  2. 私はplayerItemのリストの最初の秒を事前にロードしたいと思います。上記の方法を使用することは可能ですか?または、AVAssetResourceLoaderを使用できますか?

答えて

0

再生スピードアップにはいくつかの変数があります。このセッションをご覧くださいhttps://developer.apple.com/videos/play/wwdc2016/503/「HTTPライブストリーミングのスピードアップ」セクションがあり、参考になる場合があります。

ローディング時間は、いくつかのコンポーネントを含む場合があります。マスタープレイリストが長すぎるため、読み込んで解析する(この場合、ウェブサーバー上でgzipでhttp圧縮を設定することをお勧めします)、再生を開始する前にFairPlayストリームを暗号化するには時間がかかります。あなたのストリームがビデオの場合、ビデオの初期品質を調整することもできます。

関連する問題