19

MediaElementサーバーからWindows8ストア(以前のMetro)アプリのにデータをストリーミングしたい。ただし、ストリーミング中にストリームを「記録」する必要があるため、再要求された場合にキャッシュから提供できるため、URLをに直接フィードしたくありませんMediaElement

現在、つまずきは、からではなく、をMediaElement.SetSource()受け入れることです。IRandomAccessStreamSystem.IO.StreamHttpWebResponse.GetResponseStream()

私が今持っているコードは機能しません:

var request = WebRequest.CreateHttp(url);
request.AllowReadStreamBuffering = false;
request.BeginGetResponse(ar =>
                {
                    var response = ((HttpWebResponse)request.EndGetResponse(ar));
                    // this is System.IO.Stream:
                    var stream = response.GetResponseStream(); 
                    // this needs IRandomAccessStream:
                    MediaPlayer.SetSource(stream, "audio/mp3");
                }, null);

オーディオをストリーミングできるが、リモート側からの読み取りが終了したときにストリームをディスクにコピーできるソリューションはありますか?

4

2 に答える 2

0

次のアイデアを試したことはありませんが、うまくいくかもしれません: Web データをファイルにストリーミングし始め、数秒後 (バッファリングのため)、そのファイルを MediaElement に渡すことができます。

MediaElement は、書き込み中のファイルを開くのにうるさいことがあることに気付きましたが、動作するのを見てきました。ただし、なぜそれが機能するのか、なぜ機能しないのかはわかりません。

于 2012-10-08T15:52:56.290 に答える
0

これは、ストリームを IRandomAccessStream に変換するのに役立つと思います

InMemoryRandomAccessStream  ras = new InMemoryRandomAccessStream();

using (Stream stream = response.GetResponseStream();)
  {
    await stream.CopyToAsync(ras.AsStreamForWrite());
  }
于 2015-03-20T04:02:10.117 に答える