如何在 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章

在 silverlight 中将响应下载为文本文件

如何将数据从 asp.net 推送到 flash/silverlight 客户端?

在 Windows Phone 和 Silverlight 中将 Image Feed 转换为 BitmapImage

您可以在 Silverlight DataGrid 中将 ScrollIntoView() 与 PagedCollectionView 一起使用吗?

如何在 django 中将两列与 group by 相乘和求和

如何在laravel中将Group By与Join表一起使用[重复]