2011-12-10 8 views
1

私はインターネットからの曲をストリームするmp3プレーヤーを書いています。問題は、ConnectStreamでSeek()メソッドを使用できないことです。 ストリーミング中にConnectStreamをMemoryStreamに非同期的にコピーし、MemoryStreamのSeek()メソッドを使用することが考えられます。 考えられることは誰でもありますか?または、誰かがこれを行う方法を他の方法を知っている?おかげさまで ConnectStreamから非同期でMemoryStreamに書き込む

答えて

0

はい、これはSystem.IO.MemoryStreamで可能です。次に、ストリームの一部をローカルメモリにバッファリングします。使用を検討するSystem.IO.BufferedStream

+0

は、私は、これは彼が後にあるものではないと思います。私は彼がメモリ内のMP3全体をバッファリングし、それを介して聴取者が前後に捜索することを望んでいると思う。これはBufferedStreamが提供しない。 –

2

ユーザーが曲を前後に捜すことを望んでいる場合は、おそらく正しい軌道にいるでしょう。以下のように、(あなたは.NET 4であると仮定して)のMemoryStreamを割り当て、およびCopyToメソッドを使用します。

var ms = new MemoryStream(); 
myConnectStream.CopyTo(ms); 

あなたがダウンロードして(例えば、ユーチューブのビデオのような)を同時に追求したい場合は、少し複雑なテクニックを使用する必要があります。むしろそれらを詳細に説明するよりも、私はソースにあなたを呼びます:

http://msdn.microsoft.com/en-us/magazine/cc337900.aspx

+0

私はCopyTo()メソッドを呼ぶよりも、その時点でダウンロードされたデータだけをコピーします。私の考えは、現在ダウンロードされているすべてのデータを検索することです。 – pauliusnrk

+0

CopyToは、ストリームのEOFまでストリームをコピーします。ストリームのEOFは、ネットワークストリームの場合、ダウンロードの終了となります。 CopyToが現在ダウンロードされているファイルの終わりに達すると、より多くのバイトがダウンロードされるまでブロックされます。ダウンロードストリームが閉じられると(ファイル全体がダウンロードされたか接続が中断されたため)、CopyToコールは終了します。 –

+0

これは何もしていないよりも優れていますが、このコピーアクションがダウンロード中に機能し始めたいと思っています。たとえば、1秒後にダウンロードした曲の半分をダウンロードした時点で、 – pauliusnrk

関連する問題