2016-08-22 24 views
1

ビデオファイルをチャンクでダウンロードするビデオプレーヤーがあります。 1MBのチャンクがダウンロードされた後、MediaElementにソースを与えて再生させるイベントが呼び出されます。ビデオが再生されている間、残りの1MBのチャンクは、ファイルが完成するまでダウンロードされます。
1MBのビデオしかダウンロードされていない場合、の再生時間は17秒になります(これは後で入力されます)。

ファイルが完全にダウンロードされると、ビデオの位置を変更したり、探したりする権限がユーザに与えられます。ユーザーが17秒以下の位置にシークすると、MediaElementはその位置を変更して再生を続けますが、17秒を超える位置に移動しようとすると、ビデオがフリーズします。

これは、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に割り当てる前にダムミーファイルを作成してから、ダウンロードを開始してください。

File.WriteAllBytes(location, new byte[filesize]); 
関連する問題