NAudio MediaFoundationReader ReadFail在Windows Server 2012R2 64bit上

时间:2017-03-14 04:55:27

标签: c# .net naudio

我的本​​地计算机操作系统是Win 7SP1 64位。

服务器是Windows Server 2012R2 64位。

我使用NAudio将AAC文件转换为WAV文件:

        MediaFoundationReader mfReader =
                new MediaFoundationReader(path);
        string tempfilename = Guid.NewGuid() + ".wav";

        MemoryStream otStream = new MemoryStream();
        WaveFileWriter.WriteWavFileToStream(otStream, mfReader);
        Response.ContentType = "application/octet-stream";
        Response.AddHeader("Content-Disposition",
            "attachment; filename=" + HttpUtility.UrlEncode(tempfilename, Encoding.UTF8));
        Response.BinaryWrite(otStream.ToArray());
        Response.Flush();
        Response.End();

它在我自己的计算机上运行正常,但在服务器上抛出异常。

  

System.Runtime.InteropServices.COMException(0x80004005):对COM组件的调用返回了错误HRESULT E_FAIL。      在NAudio.MediaFoundation.MediaFoundationInterop.MFCreateSourceReaderFromURL(String pwszURL,IMFAttributes pAttributes,IMFSourceReader& ppSourceReader)

我已在服务器上安装了“Meida Foundation”和“桌面体验”功能,但它仍然无效。

我是否错过了小配置?或者只是NAudio不支持在服务器上工作?

1 个答案:

答案 0 :(得分:0)

我忘了提及一个细节"路径"参数是URL链接,而不是本地文件的名称。

因此,自服务器的网络环境以来,网络404实际引起的错误受到更多限制。

然后我更改了服务器可以访问的URL,并且它抛出了另一个错误:

  

System.Runtime.InteropServices.COMException(0xC00D36C4):不支持给定的URL的字节流类型。(异常来自HRESULT:0xC00D36C4)

所以我尝试使用" WebClient"首先下载AAC文件,然后从本地磁盘读取。

最终有效!

结论:NAudio肯定可以在服务器2012上运行,但其某些功能可能会受到限制。