2016-07-21 14 views
6

AVPlayerにはリモートメディアがロードされていますURLHLSストリーム)再生できないことがありますが、エラーは表示されません。何か他にエラーがありますか、それともまだAVPlayerItemがロードされているかどうかを確認する方法はありますか?AVPlayerは決して再生する準備ができていません

ビデオがロードされていないときには決して呼び出されないレート、ステータス、および再生のためのKVOがあります。私は、プレーヤー、プレーヤーのアイテム、および再生が続行しそうなのかどうかをチェックするためのボタンを追加しました。これらは、プレーヤーが動かなくなったときにnil、nil、およびfalseを報告します。それは、プレイヤーが立ち往生する(ビデオゲームを全くロードすることを拒否する)と、ランダムに見えますが、特定のビデオでは起こりません。

この問題をデバッグするために他にどのような手順を実行できますか?エラーやステータスを確認する他の場所はありますか?確認

さらに詳しい情報: 再生バッファが空である:真 再生バッファがいっぱいです:偽

+0

実際にプレーするようにプレーヤーに依頼していますか? – matt

+0

ええ、私はまだこれが運がないことが起こっていることを確認するために追加のボタンを追加しました。他のケースでも同じプレーヤーが動作しますが、これは奇妙です。プレイヤーアイテムをプレイヤーに変更してオブザーバーを新しいアイテムに追加しますが、ボタンを使用して状態を記録するとKVOが正常に動作していることがわかります。 –

+0

コードを投稿できますか?これはプレーヤーのアイテムを交換してプレーヤーを再利用しようとした場合にのみ発生しますか? – Msencenb

答えて

1

私たちの解決策は、プレーヤーを再利用する前に、player.replaceCurrentItemWithPlayerItem(nil)を使用してAVPlayerの割り当てを解除しました。現在のアイテムを置き換える何らかの理由で問題が発生することがありました。我々はまた、一度にすべてではなく、私たちのビデオが順番に読み込まれていることを確認しました。それが私たちの問題を解決したようです。

1

リモートサーバーからURLをロードできるようにするために、あなたのInfo.plistにこれを追加する必要があり、あなたのアプリの中から

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>mydomain.com</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
      <key>NSExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> 
      <false/> 
      <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSThirdPartyExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSRequiresCertificateTransparency</key> 
      <false/> 
     </dict> 
    </dict> 
</dict> 

see the docs

私が入力したとおりに行を追加しないでください。ニーズに合わせて設定してください。 iOSのAppleのデフォルト設定は、httpではなく、httpsの接続を期待することです。 httpを許可するように設定する必要があります。

関連する問題