Forum: Mikrocontroller und Digitale Elektronik Suche MP3 to WAV decoder


von I. L. (Gast)


Lesenswert?

Moin,

ich suche eine Software, die es mir ermöglicht MP§ oder WMA Datein in 
eine WAV Datei zu konvertieren. Dabei soll bei der WAV-Datei die 
Samplerate sowie Mono oder Stereo einstellbar sein. Ich möchte mir 
Datein erstellen, die ich später aufm AVR abspielen kann.

Leider ist das www zu voll damit, ich habe jetzt schon n paar Programme 
runtergeladen, die aber alle nicht das können.

Kann mir jemand ne einfaches Tool empfehlen?

Danke


Gruß Knut

von ... (Gast)


Lesenswert?

probiers mal mit "lame"

von Achim M. (minifloat)


Lesenswert?

Ich kann dir Audacity (mit lame lib für mp3 de-/encoding) sehr 
empfehlen, gibts für alle 3 großen Betriebssysteme. Geht gut, solang man 
die Stabilen Versionen benutzt.
mfg mf

von Gerald (Gast)


Lesenswert?

wie kann ich mit lame eine mp3 datei in wav konvertieren?

folgendes funktioniert leider nicht;(

int main()
{
  int read, write;

    FILE *pcm = fopen("music_noisy.mp3", "rb");
    FILE *mp3 = fopen("music_noisy2.mp3", "wb");

    const int PCM_SIZE = 8192;
    const int MP3_SIZE = 8192;

  short int pcm_buffer[PCM_SIZE*2];
    short int pcm_buffer1[PCM_SIZE];
  short int pcm_buffer2[PCM_SIZE];
    unsigned char mp3_buffer[MP3_SIZE];

  mp3data_struct mp3data = {0};

  memset(pcm_buffer, 0, sizeof(pcm_buffer));
  memset(pcm_buffer1, 0, sizeof(pcm_buffer1));
  memset(pcm_buffer2, 0, sizeof(pcm_buffer2));
  memset(mp3_buffer, 0, sizeof(mp3_buffer));

    lame_t lame = lame_init();
  hip_t l = hip_decode_init();
    lame_set_in_samplerate(lame, 44100);
    lame_set_VBR(lame, vbr_default);
  //lame_set_mode(lame, MONO);
    lame_init_params(lame);

    do {
    read = fread(mp3_buffer, sizeof(unsigned char), MP3_SIZE, pcm);
    read = hip_decode_headers(l, mp3_buffer, MP3_SIZE, pcm_buffer1, 
pcm_buffer2, &mp3data);

    // nun haben wir die mp3 daten als wav in pcm_buffer1 und 
pcm_buffer2

    memcpy(pcm_buffer, pcm_buffer1, sizeof(pcm_buffer1));
    memcpy(&pcm_buffer[PCM_SIZE], pcm_buffer2, sizeof(pcm_buffer2));
        write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, 
mp3_buffer, MP3_SIZE);
        fwrite(mp3_buffer, write, 1, mp3);
  } while (read != 0);

  hip_decode_exit(l);
    lame_close(lame);
    fclose(mp3);
    fclose(pcm);

    return 0;
}

von Nicki (Gast)


Lesenswert?

Nimm doch einfach Winamp. Der kann das.

von Gerald (Gast)


Lesenswert?

ich meinte wie kann man die mp3 datei einlesen in wav konvertieren und 
dann wieder abspeichern...

mit dem wav samples kann ich dann einen tiefpass filter anwenden...

von Gerald (Gast)


Lesenswert?

ich will schon meinen eigenen filter anwenden...deshalb muss ich es so 
machen...

von Rolf M. (rmagnus)


Lesenswert?

Muß dein Programm die Konvertierung unbedingt selber machen? Du könntest 
auch ein kleines Skript basteln, das das über Pipes extern macht, etwa 
in der Art:
1
mpg123 input.mp3 --wav - | deinprogramm | lame - output.mp3
(ggf. noch mit den gewünschten Qualitätseinstellungen)


Dann kanst du die wav-Daten direkt von stdin lesen und das Ergebnis auf 
stdout wieder rausschreiben.

von Gerald (Gast)


Lesenswert?

ich will die samples schon direkt in c++ in einen buffer einlesen und 
kein skript bauen!

von Rolf M. (rmagnus)


Lesenswert?

Ja, und? Kannst du doch. Das Skript kümmert sich nur um den mp3-Teil. 
Die Sampledaten landen in deinem Program.

von Johnny (Gast)


Lesenswert?

Hi Gerald,

hast Du den Code mal zum Laufen bekommen?

Best
J

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.