Attualmente sto usando NAudio per catturare il suono e crea solo un file wav. Sto cercando un modo per codificarlo su un mp3 prima di salvare il file. Ho trovato LAME ma quando provo ad aggiungere il file lame_enc.dll dice "Non è stato possibile aggiungere un riferimento. Assicurati che il file sia accessibile e che sia un assembly valido o un componente COM". Qualsiasi aiuto sarebbe apprezzato.Come posso usare LAME per codificare un wav con un mp3 C#
risposta
Basta posizionare il file lame_enc.dll nella cartella bin e non provare ad aggiungerlo al riferimento. Dopo di ciò prova questo codice. Qui è anche possibile impostare il bit rate come 64.128, .....
public byte[] ConvertWavToMP3(byte[] bt, uint bitrate)
{
MemoryStream ms = new MemoryStream(bt);
ms.Seek(0, SeekOrigin.Begin);
var ws = new WaveFileReader(ms);
byte[] wavdata = null;
using (MemoryStream wavstrm = new MemoryStream())
using (WaveFileWriter wavwri = new WaveFileWriter(wavstrm, ws.WaveFormat))
{
ws.CopyTo(wavwri);
wavdata = wavstrm.ToArray();
}
WaveLib.WaveFormat fmt = new WaveLib.WaveFormat(ws.WaveFormat.SampleRate, ws.WaveFormat.BitsPerSample, ws.WaveFormat.Channels);
Yeti.Lame.BE_CONFIG beconf = new Yeti.Lame.BE_CONFIG(fmt, bitrate);
byte[] srm = null;
using (MemoryStream mp3strm = new MemoryStream())
using (Mp3Writer mp3wri = new Mp3Writer(mp3strm, fmt, beconf))
{
mp3wri.Write(wavdata, 0, wavdata.Length);
byte[] mp3data = mp3strm.ToArray();
return mp3data;
}
}
Il file lame_enc.dll
è una DLL non gestita, il che significa che non si può semplicemente aggiungere un riferimento ad esso nella vostra applicazione .NET. È necessario un wrapper per definire quali sono i punti di ingresso e come vengono chiamati. Per lame_enc.dll
Io uso il Yeti
involucro, che può essere trovato nel codice allegato this CodeProject article.
ho postato uno step-by-step su come utilizzare questo per la codifica MP3 in risposta alla domanda: change format from wav to mp3 in memory stream in NAudio. Questo dovrebbe iniziare.
modo più semplice in .Net 4.0:
Utilizzare il Visual Studio Nuget Package Manager Console:
Install-Package NAudio.Lame
Codice Snip: Invia discorso a un flusso di memoria, quindi salvare come 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);
}
}
retMs non fa nulla in questo esempio? –
- 1. Come decodificare mp3 in wav usando lame in C/C++?
- 2. Lame MP3 Encoder compile per Android
- 3. Come posso convertire da midi a wav/mp3 in C#?
- 4. Come posso codificare un monitor in C?
- 5. Croce (C/C++) Libreria audio per MP3, AAC, WAV
- 6. Come applicare DRM su un file .mp3/.wav
- 7. Posso usare AVCaptureSession per codificare un flusso AAC in memoria?
- 8. Convertire il file .wav in .mp3
- 9. Carica un file WAV con Paperclip e memorizza entrambe le versioni .wav e .mp3
- 10. Come convertire .wav in .mp3 usando Java?
- 11. mp3 alla conversione wav in java
- 12. come usare sox per comprimere mp3?
- 13. Qual è l'algoritmo per convertire un file mp3 in un file wav?
- 14. Come stampare un file wav
- 15. Come posso codificare un file remoto?
- 16. Converti Suono registrato in iphone da un formato a un altro dire wav to mp3
- 17. Come attivare da Python la riproduzione di un file audio WAV o MP3 su un Mac?
- 18. Come si converte un file wav in formato mp3 usando sox?
- 19. Visualizzazione audio (.wav/.mp3) come grafico in Java
- 20. Registra audio e caricare Wav o MP3 al server
- 21. Un semplice programma C per riprodurre mp3 utilizzando libvlc
- 22. Come posso usare parseInt per un doppio?
- 23. Come posso salvare il file Text to Speech come formato .wav/.mp3 in Storage esterno
- 24. Come posso usare bigint con C#?
- 25. Ampiezza media di un .wav in C#
- 26. Come posso usare afconvert per convertire tutti i file in una directory da wav a caf?
- 27. Come riprodurre un file .wav con un programma Mathematica?
- 28. Come posso determinare l'intensità del suono di un file WAV?
- 29. Come posso compilare lame come libreria statica (.a) per armv6 e armv7 di iPhone?
- 30. Come posso riprodurre file audio (mp3, wav, ecc.) Direttamente senza un'applicazione associata?
http://www.codeproject.com/Articles/501521/How-to-convert-between-most-audio-formats-in-NET – MichaC