AV Foundation APIを使用するビデオプレーヤーに問題があり、HTTPプログレッシブダウンロードでクリップを再生します。 AVPlayerがリリースされても、私はまだビデオクリップをダウンロードしています(HTTPトラフィックスニファを介して観察されます)。AVPlayerインスタンスを公開した後でもビデオがダウンロードされます
私のプレイヤーがそのように初期化されます。
m_player = new AVPlayer();
m_playerLayer = new AVPlayerLayer();
m_playerLayer.Player = m_player;
その後、私はビデオのURLがある場合:I'amは資産が再生可能であることが通知
m_url = new NSUrl (...);
m_asset = new AVAsset(m_url);
m_asset.AddObserver(this, new NSString ("playable"), NSKeyValueObservingOptions.Initial | NSKeyValueObservingOptions.New, AVPlayerAssetObservationContext);
、私はをAVPlayerItemを作成する:
m_playerItem = new AVPlayerItem(m_asset);
if (m_player.CurrentItem != m_playerItem)
{
m_player.ReplaceCurrentItemWithPlayerItem (m_playerItem);
}
私のビデオは問題なく再生されています。次に、戻るボタンを押すと、Destroy()メソッドを呼び出すメカニズムがあります。ここで私は私のプレーヤーがうまく解放されることを確認するために多くのことを試してみました:
if(m_player != null)
{
m_player.Pause();
m_player.Dispose();
m_player = null;
}
if(m_playerLayer != null)
{
m_playerLayer.Dispose();
m_playerLayer = null;
}
if(m_playerItem != null)
{
m_playerItem.Dispose();
m_playerItem = null;
}
if(m_asset != null)
{
m_asset.CancelLoading();
m_asset.RemoveObserver(this, new NSString("playable"));
m_asset.Dispose();
m_asset = null;
}
if(m_url != null)
{
m_url.Dispose();
m_url = null;
}
私は、デバッガで私のアプリをテストし、確認のために、I'amは、このコードに陥ります。私のオブジェクトはよくリリースされているようですが、アプリケーションがまだビデオURLをダウンロードしていることを確認してください。 init/releaseコードで何か問題がありますか?
ありがとうございました!
私が見つけた回避策は、m_player.ReplaceCurrentItemWithPlayerItem(新しいAVPlayerItem())を追加することです。ビデオのダウンロードが中断されます。 – nicolas
あなたはあなたのコメントを答えに移動し、これを答えたものとしてマークする必要があります。テストケースを使ってhttp://bugzilla.xamarin.comでバグレポートを開くことを検討する必要があります。これは、少なくともドキュメント化されていなければならないし、*多分* APIでもっと簡単にできることがあるからです)。 – poupou
回避策をここに入れれば十分です:-) – nicolas