将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