1
我的視頻播放器使用AV Foundation API並通過HTTP漸進式下載播放剪輯時遇到問題。即使AVPlayer發佈時,我仍然在下載視頻剪輯(通過HTTP Traffic sniffer觀察)。發佈AVPlayer實例後仍然下載視頻
我的播放器初始化這樣的:
m_player = new AVPlayer();
m_playerLayer = new AVPlayerLayer();
m_playerLayer.Player = m_player;
然後,當我有視頻的網址:
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;
}
我測試我的應用程序調試和肯定,我'落入該代碼。我的對象似乎很好的發佈,但肯定應用程序仍在下載視頻網址。我在init/release代碼中做錯了什麼?
在此先感謝您的幫助!
我發現的解決方法是添加m_player.ReplaceCurrentItemWithPlayerItem(new AVPlayerItem());視頻下載中斷。 – nicolas 2012-02-20 17:37:32
您應該將您的評論移至答案中,並將其標記爲已回答。你還應該考慮打開一個bug報告,在http://bugzilla.xamarin.com上用一個測試用例,因爲這應該(至少)被記錄下來,並且*可能*我們可以做些事情來讓它更容易(在API中)。 – poupou 2012-02-20 18:14:40
我希望這是足夠的解決方法在這裏:-) – nicolas 2012-02-21 08:00:31