1

这个问题与 ASP.NET MVC WEP API 和 Naudio 有关

我想要的是

当我使用此代码时,我在 WPF 应用程序中工作原型,将 wav 文件转换为 mp3

var retMs = new MemoryStream();
using (var ms = new MemoryStream(File.ReadAllBytes("sound.wav")))
using (var rdr = new WaveFileReader(ms))
using (var wtr = new LameMP3FileWriter(retMs, rdr.WaveFormat, 128))
{
    rdr.CopyTo(wtr);
}
return retMs.ToArray();

但是在 api 项目中使用此代码时,我收到这样的错误

无法加载 DLL 'libmp3lame.dll':找不到指定的模块。

我知道libmp3lame是 unmanged dll,我只是将 dll 复制到 bin 文件夹的 WPF 项目,一切正常,但是我如何在 Web API 项目中实现这一点,我的意思是 asp.net 5 项目

请注意
,上面的代码在 wpf 项目中可以正常工作

现在我只在我的 API 中受支持是 dotnetframwork意味着只有 Windows 我删除了其他平台依赖项

更新:

在ASP.Net MVC 存储库中创建问题

4

2 回答 2

0

我参加聚会有点晚了,但我会为后代分享这个。NAudio 可以在没有非托管 DLL 的情况下将 WAVE 转换为 MP3 来避免这个问题。唯一的障碍是它必须写出一个文件(然后可以读回)。假设您有一个 MemoryStream ,您可以在其中读取所有字节(就像您所做的那样):

using (var wfr = new WaveFileReader(ms))
{
    MediaFoundationApi.Startup();
    MediaFoundationEncoder.EncodeToMp3(wfr, @"C:\Temp\test.mp3", 48000);
    MediaFoundationApi.Shutdown();
}
于 2018-12-28T19:28:05.350 回答
-1

听起来像是在 bin 库路径中获取到模块的映射的问题,请查看以下内容可能会有所帮助 -

如何在 ASP.NET Core 1.0 中获取 bin 文件夹

MVC4 应用程序“无法加载 DLL 'libmp3lame.32.dll'

于 2016-05-09T07:34:30.927 回答