2016-08-22 27 views
1

我有一個視頻播放器,它以塊的形式下載視頻文件。在下載一塊1MB的數據後,會調用一個事件給MediaElement來源,並使其播放。在播放視頻的同時,下載剩餘的1MB塊直到文件完成。
如果只下載1MB的視頻,則播放時間等於17秒(稍後會介紹)。

當文件被完全下載時,授予用戶改變視頻位置或尋找它的權限。如果用戶尋找的位置等於或小於17秒,則MediaElement將改變其位置並繼續播放,但是如果用戶尋找到大於17s的位置,則視頻會凍結。

這可能是因爲MediaElement只緩衝了1MB的視頻,所以它只會在這個時間範圍內尋找,但它沒有任何意義,因爲如果我讓它不間斷播放,它就會播放整個視頻沒有任何問題。有人能告訴我發生了什麼事嗎?
代碼:MediaElement不能在更改位置後播放

private void downloadchunks() 
for (int i = 1; i <= 20; i++) 
{ 
    WriteStream = new System.IO.FileStream(DownloadLocation, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite); 
    //request and receive a response of 1MB of a file 
    rpstream = response.GetResponseStream(); 
    byte[] buffer; 
    using (var SReader = new MemoryStream()) 
    { 
    rpstream.CopyTo(SReader); 
    buffer =SReader.ToArray(); 
    WriteStream.Seek(WritePos,SeekOrigin.Begin); 
    WriteStream.Write(buffer, 0, buffer.Length); 
    WriteStream.Close(); 
    } 
    if (i==1) 
    { 
    PlayVideo(); 
    } 
} 
private void PlayVideo() 
{ 
    MediaElement.Source = new uri(DownloadLocation); 
    MediaElement.Play(); 
} 

回答

0

我已經想通了。在將其分配給MediaElement之前,只需創建一個dummmy文件,然後開始下載。

File.WriteAllBytes(location, new byte[filesize]);