【问题标题】:Using NAudio/Nlayer to mix two mp3 files使用 NAudio/Nlayer 混合两个 mp3 文件
【发布时间】:2017-11-29 20:41:23
【问题描述】:

关于这个问题:NoDriver calling acmFormatSuggest on Azure

我的托管服务器不允许我安装任何东西或注册 dll。我正在使用 Naudio 混合到 mp3 文件,它给了我错误 NoDriver calling acmFormatSuggest。

我在我的应用程序中下载并安装了 Nlayer,并将代码修改为如下所示:

var builderBackground = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf)); 
var builderMessage = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf)); 
Mp3FileReader mpbacground = new Mp3FileReader(ThumbAudioMP3, builderBackground); Mp3FileReader mpMessage = new Mp3FileReader(stream, builderMessage); 
background = WaveFormatConversionStream.CreatePcmStream(mpbacground); 
message = WaveFormatConversionStream.CreatePcmStream(mpMessage);

var mixer = new WaveMixerStream32(); var messageOffsetted = new WaveOffsetStream(message, TimeSpan.FromSeconds(0), TimeSpan.Zero, TimeSpan.FromSeconds(seconds));

我在 WaveFormatConversionStream.CreatePcmStream(... 行中调用 acmFormatSuggest 时遇到相同的 NoDriver 错误

谁能告诉我应该怎么做?有关于 Nlayer 的文档吗?

【问题讨论】:

    标签: mp3 naudio file-conversion


    【解决方案1】:

    您不需要WaveFormatConversionStream.CreatePcmStream 行。 Mp3FileReader 类已经发出 PCM。

    【讨论】:

    • 感谢您的回复,但我不确定我是否遵循。以下代码有效,但在服务器中无效: Mp3FileReader mpbacground = new Mp3FileReader(ThumbAudioMP3, wave => new DmoMp3FrameDecompressor(wave)); Mp3FileReader mpMessage2 = new Mp3FileReader(stream, wave => new DmoMp3FrameDecompressor(wave)); var 混合器 = 新 WaveMixerStream32(); var backgroundOffsetted = new WaveOffsetStream(mpbacground, TimeSpan.FromSeconds(0), TimeSpan.Zero, TimeSpan.FromSeconds(60));使用 NLayer Decompressor 我在 WaveOffsetStream 中收到错误:仅支持 PCM
    • 也许你可以给我一个代码示例或指出我正确的方向?我有这个问题无法混合 mp3 文件。提前致谢!
    • 我找不到解决方案。媒体基础也未安装在服务器中。我需要做的就是获取两个 Mp3 文件并将它们合并在一起。有没有办法使用 NLayer 压缩器来做到这一点?你能给我一个代码示例吗?非常感谢您的帮助!
    • 我用这段代码更进一步:code var builderMessage = new Mp3FileReader.FrameDecompressorBuilder(wf => new Mp3FrameDecompressor(wf)); Mp3FileReader mpbacground = new Mp3FileReader(ThumbAudioMP3, builderMessage); Mp3FileReader mpMessage = new Mp3FileReader(stream, builderMessage); var 混合器 = 新的 MixingSampleProvider(mpbacground.WaveFormat);混合器.AddMixerInput(mpbacground);混合器.AddMixerInput(mpMessage); WaveFileWriter.CreateWaveFile16(fullPath, mixer);code 但是现在我如何将文件修剪到 60 秒并重新采样?如何使用 WdlResamplingSampleProvider?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    相关资源
    最近更新 更多