如何在 Silverlight 应用程序中将 byte[] 保存为 wav 文件?
Posted
技术标签:
【中文标题】如何在 Silverlight 应用程序中将 byte[] 保存为 wav 文件?【英文标题】:How to save byte[] as wav file in silverlight application? 【发布时间】:2014-01-20 17:37:06 【问题描述】:在我的 MVC 应用程序中,我添加了 Silverlight 录音机。此录音机将音频 using System.Windows.Media;
命名空间录制为代表 wav 文件的 byte[]
。
现在我需要将此byte[]
作为.wav
文件保存在本地磁盘(服务器)上。
到目前为止,我已经尝试了以下方法:
byte[] audioData; // Here I contain my data
System.IO.File.WriteAllBytes(@"C:\Temp\yourfile.wav", this.audioData); // Doesn't work
BinaryWriter Writer = null;
string name = @"C:\Temp\yourfile.wav";
try
Writer = new BinaryWriter(File.OpenWrite(name));
Writer.Write(this.audioData);
Writer.Flush();
Writer.Close();
catch
...
但是对我没有任何作用...我做错了什么?
好的。假设我可以将数据作为 json 字符串发送到控制器:
WebClient net = new WebClient();
string data = UTF8Encoding.UTF8.GetString(this.audioData, 0, this.audioData.Length);
net.UploadStringAsync(new Uri("/Home/SaveFile", UriKind.Relative), data);
如何在 MVC Action 中获取这些数据?
【问题讨论】:
【参考方案1】:Silverlight 在客户端运行,您的 MVC 代码在服务器端,因此在当前的情况下这将不起作用。
我建议使用网络服务将数据发送回您的服务器以进行保存。
看看使用WCF 或者WebAPI 来启动和运行它。
如果您真的想要变得复杂,您还可以使用SignalR 之类的东西让客户端/服务器(本质上就是这个设置)相互发送通信并通过它发送回数据。虽然这似乎有点矫枉过正。
【讨论】:
以上是关于如何在 Silverlight 应用程序中将 byte[] 保存为 wav 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据从 asp.net 推送到 flash/silverlight 客户端?
在 Windows Phone 和 Silverlight 中将 Image Feed 转换为 BitmapImage
您可以在 Silverlight DataGrid 中将 ScrollIntoView() 与 PagedCollectionView 一起使用吗?