У меня проблемы с моим видеопроигрывателем, который использует AV Foundation API и воспроизводит клип по прогрессивной загрузке HTTP. Даже когда AVPlayer выпущен, я все равно загружаю видеоклип (наблюдается через анализатор трафика HTTP).
Мой плеер инициализируется так:
m_player = new AVPlayer();
m_playerLayer = new AVPlayerLayer();
m_playerLayer.Player = m_player;
Затем, когда у меня есть URL видео:
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;
}
Я протестировал свое приложение с помощью отладчика и наверняка попал в этот код. Мои объекты, кажется, хорошо освобождены, но приложение все еще загружает URL-адрес видео. Я делаю что-то не так в коде инициализации / выпуска?
Заранее благодарен за помощь!