Windows 服务器 2012R2 64 位上的 NAudio MediaFoundationReader ReadFail
NAudio MediaFoundationReader ReadFail On Windows Server 2012R2 64bit
我的本地电脑OS是Win 7SP1 64bit。
服务器是Windows Server 2012R2 64bit。
我使用 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" 和 "Desktop Experience" 功能,但仍然无法使用。
我是不是漏掉了小配置?或者只是 NAudio 不支持在服务器上工作?
我忘了提一个细节,即 "path" 参数是 URL Link,而不是本地文件名。
所以,实际上是网络404导致的错误,因为服务器的网络环境比较受限
然后我更改了服务器可以到达的URL,它抛出了一个不同的错误:
System.Runtime.InteropServices.COMException (0xC00D36C4): 不支持给定的 URL 的字节流类型。 (异常来自 HRESULT:0xC00D36C4)
所以我尝试使用"WebClient"先下载AAC文件,然后从本地磁盘读取。
终于成功了!
总结:NAudio在server 2012上确实可以正常运行,但是部分功能可能会受到限制。
我的本地电脑OS是Win 7SP1 64bit。
服务器是Windows Server 2012R2 64bit。
我使用 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" 和 "Desktop Experience" 功能,但仍然无法使用。
我是不是漏掉了小配置?或者只是 NAudio 不支持在服务器上工作?
我忘了提一个细节,即 "path" 参数是 URL Link,而不是本地文件名。
所以,实际上是网络404导致的错误,因为服务器的网络环境比较受限
然后我更改了服务器可以到达的URL,它抛出了一个不同的错误:
System.Runtime.InteropServices.COMException (0xC00D36C4): 不支持给定的 URL 的字节流类型。 (异常来自 HRESULT:0xC00D36C4)
所以我尝试使用"WebClient"先下载AAC文件,然后从本地磁盘读取。
终于成功了!
总结:NAudio在server 2012上确实可以正常运行,但是部分功能可能会受到限制。