c# - 我如何使用 LAME 将 wav 编码为 mp3 c#

标签 c# naudio lame

我目前正在使用 NAudio 来捕捉声音,它只会创建一个 wav 文件。我正在寻找一种在保存文件之前将其编码为 mp3 的方法。我找到了 LAME,但每当我尝试添加 lame_enc.dll 文件时,它都会显示“无法添加引用。请确保该文件可访问,并且它是有效的程序集或 COM 组件”。任何帮助将不胜感激。

最佳答案

.Net 4.0 中最简单的方法:

使用 visual studio Nuget 包管理器控制台:

Install-Package NAudio.Lame

代码片段:将语音发送到内存流,然后保存为 mp3:

//reference System.Speech
using System.Speech.Synthesis; 
using System.Speech.AudioFormat;

//reference Nuget Package NAudio.Lame
using NAudio.Wave;
using NAudio.Lame; 


using (SpeechSynthesizer reader = new SpeechSynthesizer()) {
    //set some settings
    reader.Volume = 100;
    reader.Rate = 0; //medium

    //save to memory stream
    MemoryStream ms = new MemoryStream();
    reader.SetOutputToWaveStream(ms);

    //do speaking
    reader.Speak("This is a test mp3");

    //now convert to mp3 using LameEncoder or shell out to audiograbber
    ConvertWavStreamToMp3File(ref ms, "mytest.mp3");
}

public static void ConvertWavStreamToMp3File(ref MemoryStream ms, string savetofilename) {
    //rewind to beginning of stream
    ms.Seek(0, SeekOrigin.Begin);

    using (var retMs = new MemoryStream())
    using (var rdr = new WaveFileReader(ms))
    using (var wtr = new LameMP3FileWriter(savetofilename, rdr.WaveFormat, LAMEPreset.VBR_90)) {
        rdr.CopyTo(wtr);
    }
}

关于c# - 我如何使用 LAME 将 wav 编码为 mp3 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19166140/

相关文章:

c# - 在执行 IEnumerable<T> 方法之前,方法如何在 C# 中返回结果?

c# - SqlCommand 还是 SqlDataAdapter?

c# - windows 7 控制麦克风播放音量

c# - 通过网络服务暂停流媒体广播

iOS Swift - 合并 .wav 文件并将其转换为 .mp3

c# - 如何使用 C# 将 Cursor 转换为可以保存到 .resx 文件中的图像?

wpf - NAudio低通滤波器

ios - 在 iOS 中使用 LAME 从 PCM 编码为 MP3 时点击

ffmpeg 声称我没有给它输出文件

c# - 具有属性的单例类的依赖注入(inject)