将byte数组转成IRandomAccessStream

  今天在做项目时,遇到了如何将byte[]数组中的音频流,绑定到MediaElement控件中去,在MediaElement控件中有一个方法

  public void SetSource(IRandomAccessStream stream, string mimeType);该方法是将音频以流的方式绑定到MediaElement控件中去,实现音频文件的播放。

  现在问题就出现在我们可以将byte[]数组中的音频流转换成MemoryStream类型的流,可是如何将MemoryStream类型的流转换成IRandomAccessStream类型的流呢?

  接下来我们一步一步实现:

  1.首先先将byte[]转换成MemoryStream类型的

  MemoryStream stream = new MemoryStream(bit) //bit为byte[]类型的字节数组

  2.然后我们将MemoryStream类型转换成IRandomAccessStream类型的

 1 private async Task<IRandomAccessStream> Convert(MemoryStream stream)
 2         {
 3             var randomAccessStream = new InMemoryRandomAccessStream();
 4             var outputStream = randomAccessStream.GetOutputStreamAt(0);
 5             var dw = new DataWriter(outputStream);
 6             var task = new Task(() => dw.WriteBytes(stream.ToArray()));
 7             task.Start();
 8             await task;
 9             await dw.StoreAsync();
10             var success = await outputStream.FlushAsync();
11             return randomAccessStream;
12         }

  3.最后将转换成IRandomAccessStream类型的流绑定到音频控件中去,实现音频文件的播放。

  MediaElement.SetSource(stream,"");

  以上就是实现了如何将Byte[]字节流向IRandomAccessStream流。

详细请转:http://www.silverlightchina.net/html/windows8/study/2012/1110/20047.html

posted @ 2013-06-05 13:41  Porbonan  阅读(494)  评论(0编辑  收藏  举报