背景:我正在使用一个返回MIME类型为的数据的服务audio/wav.我需要为这个音频提供一个播放机制(目前作为MVC应用程序构建).举个例子,我的端点看起来像https://audio.fooservice.com/GetAudio?audioId=123
音频为8kHz,1通道u-law.
由于使用HTML5 <audio>标记时浏览器的格式支持不同,我无法使用原始的u-law wav,因为Internet Explorer不会播放它.
我提出的解决方案是从源格式到mp3进行实时转换.
我在这里和NAudio论坛中拼凑了一个部分工作的解决方案来解决各种其他问题,但它引发了一个例外情况,如下面的评论中所述:
private void NAudioTest(string url)
{
Stream outStream = new MemoryStream();
var format = WaveFormat.CreateMuLawFormat(8000, 1);
using (Stream ms = new MemoryStream())
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
using (Stream stream = request.GetResponse().GetResponseStream())
{
using (var reader = new RawSourceWaveStream(stream, format))
{
// reader is not seekable; we need to convert to a byte array to seek
var bytes = reader.ToByteArray(); …Run Code Online (Sandbox Code Playgroud)