我如何可以使用LAME到WAV编码为一个mp3 C# [英] How do can I use LAME to encode an wav to an mp3 c#

查看:1299
本文介绍了我如何可以使用LAME到WAV编码为一个mp3 C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前使用n音讯捕捉声音,它只会造成一个wav文件。我正在寻找一种方式保存文件前将其编码到MP3。我发现LAME但是当过我尝试添加它说lame_enc.dll文件不能添加的引用。请确保该文件是可访问的,这是一个有效的集会或COM组件。 。任何帮助,将不胜感激。

I am currently using NAudio to capture the sound and it only creates a wav file. I am looking for a way to encode it to an mp3 before saving the file. I found LAME but when ever i try to add the lame_enc.dll file it says "A reference could not be added. Please make sure the file is accessible, and that is a valid assembly or COM component". Any help would be appreciated.

推荐答案

在.NET 4.0中最简单的方式:

Easiest way in .Net 4.0:

使用Visual Studio的NuGet包管理器控制台:

Use the visual studio Nuget Package manager console:

Install-Package NAudio.Lame

代码剪断:发送语音到内存流,然后保存为MP3:

Code Snip: Send speech to a memory stream, then save as 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);
    }
}

这篇关于我如何可以使用LAME到WAV编码为一个mp3 C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆