Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

Lame Mp3 zu Wave decoder in C/C++

  -1- -2- -3- vorwärts >>>  
Smoni1 - 29
Halbprofi (offline)

Dabei seit 10.2007
233 Beiträge

Geschrieben am: 22.04.2013 um 18:07 Uhr

Hi, für ein Spiel, dass ich gerade Programmiere, brauche ich einen Weg, Mp3 Dateien zu dekodieren und temporär als Wave Datei zu speichern. Dies sollte ja mit lame in C oder C++ machbar sein.

Da ich was C/ C++ angeht aber noch ein blutiger Anfänger bin und ich die Codes, die ich bis jetzt gefunden habe, noch nicht entziffern kann, bräuchte ich hier ein simples C (wegen mir auch C++) Programm (also den Code, aber bitte mir erklärungen), das eine Mp3 Datei in eine Wave Datei umwandelt.

Wäre schön wenn sich jemand die Zeit nehmen würde mir zu helfen :)

Alle Menschen haben Fehler. Ich wünschte ich hätte auch welche.

netscout - 36
Champion (offline)

Dabei seit 10.2005
6301 Beiträge

Geschrieben am: 22.04.2013 um 18:14 Uhr
Zuletzt editiert am: 22.04.2013 um 18:14 Uhr

Du gehst komplizierte Wege.

Warum MP3 als samplerformat für gamesounds verwenden, wenn man es dann doch über Umwege als .wav codiert um es dann später abzurufen? es gibt genug decoderbibliotheken für mp3 oder ganze Wiedergabeprogramme, die du einfach einbindest und über "dein" Programm mit Instruktionen fütterst.

ffmpeg wäre so eine Lösung. Mit der kannst du einerseits mp3 in wav umkodieren oder mp3 direkt abspielen. Videosequenzen etc lassen sich alles über dieses Tool realisieren.

[zustimmen1 Person stimmt diesem Beitrag zu:
EnjeruNyu, ... mehr anzeigen


Alles was entsteht ist wert, dass es zu Grunde geht.

Smoni1 - 29
Halbprofi (offline)

Dabei seit 10.2007
233 Beiträge

Geschrieben am: 22.04.2013 um 18:48 Uhr

Danke für die Antwort, aber das ist nicht das, was ich meinte...
Ich brauche den Decoder nicht für Sounds im Spiel. Das Spiel läuft zur Musik und ist davon abhängig. Das Game soll aber natürlich nicht nur mit Wave Dateien funktionieren...

Dafür brauche ich den Code^^

Alle Menschen haben Fehler. Ich wünschte ich hätte auch welche.

netscout - 36
Champion (offline)

Dabei seit 10.2005
6301 Beiträge

Geschrieben am: 22.04.2013 um 18:56 Uhr
Zuletzt editiert am: 22.04.2013 um 18:59 Uhr

also eine x-beliebige datei in .wav umwandeln? Wie gesagt, das kann ffmpeg auch.

Kann man als sourcecode oder fertig kompiliert mit Bibliotheken runterladen:
ffmpeg Windows

Alles was entsteht ist wert, dass es zu Grunde geht.

Smoni1 - 29
Halbprofi (offline)

Dabei seit 10.2007
233 Beiträge

Geschrieben am: 22.04.2013 um 19:08 Uhr

Zitat von netscout:

also eine x-beliebige datei in .wav umwandeln? Wie gesagt, das kann ffmpeg auch.

Kann man als sourcecode oder fertig kompiliert mit Bibliotheken runterladen:
ffmpeg Windows


Ok, das sieht schonmal gut aus danke :)
Jedoch bin ich wie gesagt ein blutiger Anfänger und habe keine Ahnung, wie und was ich jetzt damit machen muss, bzw wie ich da jetzt zB eine Datei reinladen kann, die das Programm dann umwandeln soll.

Alle Menschen haben Fehler. Ich wünschte ich hätte auch welche.

Smoni1 - 29
Halbprofi (offline)

Dabei seit 10.2007
233 Beiträge

Geschrieben am: 22.04.2013 um 19:22 Uhr

Also ich sehe, in der decoding_encoding.c datei gibt es zB die Funktion audio_decode_example, aber wie kann ich dort nun eine Datei reinladen?

Alle Menschen haben Fehler. Ich wünschte ich hätte auch welche.

netscout - 36
Champion (offline)

Dabei seit 10.2005
6301 Beiträge

Geschrieben am: 22.04.2013 um 19:40 Uhr
Zuletzt editiert am: 22.04.2013 um 19:40 Uhr

Alle Antworten auf deine fFragen.
"Tue das in das rein" diese Denkweise solltest du dir abgewöhnen. Du hast eine Datei, und ein Werkzeug, um x zum gesuchten y umzuwandeln, ergo: ein Dateistrom wird durch zuhilfenahme einer instruktionsbibliothek umgewandelt.
ein Beispiel:

Zitat:

ffmpeg [global_options] {[input_file_options] -i ‘input_file’} ... {[output_file_options] ‘output_file’} ...


Alles was entsteht ist wert, dass es zu Grunde geht.

Smoni1 - 29
Halbprofi (offline)

Dabei seit 10.2007
233 Beiträge

Geschrieben am: 22.04.2013 um 20:02 Uhr

Und woher bekomme ich die hanzen Header Files?

Alle Menschen haben Fehler. Ich wünschte ich hätte auch welche.

netscout - 36
Champion (offline)

Dabei seit 10.2005
6301 Beiträge

Geschrieben am: 22.04.2013 um 20:06 Uhr
Zuletzt editiert am: 22.04.2013 um 20:08 Uhr

Wer von uns ist denn hier der angehende Programmierer? In der "Dev Version" befindet sich alles nötige. ffmpeg kann als eigenständiger Prozess agieren, welcher Instruktionen von deinem Programm entgegen nimmt und sie ausführt. Alles was du tun musst ist dafür zu sorgen, das beide dieselbe Sprache sprechen. Welche Sprache ffmpeg versteht, steht ausführlich in der verlinkten Dokumentation.

Alles was entsteht ist wert, dass es zu Grunde geht.

Smoni1 - 29
Halbprofi (offline)

Dabei seit 10.2007
233 Beiträge

Geschrieben am: 22.04.2013 um 20:14 Uhr

Zitat von netscout:

Wer von uns ist denn hier der angehende Programmierer? In der "Dev Version" befindet sich alles nötige. ffmpeg kann als eigenständiger Prozess agieren, welcher Instruktionen von deinem Programm entgegen nimmt und sie ausführt. Alles was du tun musst ist dafür zu sorgen, das beide dieselbe Sprache sprechen. Welche Sprache ffmpeg versteht, steht ausführlich in der verlinkten Dokumentation.


Also, wie ich geschrieben habe: Ich bin ein blutiger Anfänger, was C angeht.
Aber ich komme meinem Ziel schon etwas näher^^

Alle Menschen haben Fehler. Ich wünschte ich hätte auch welche.

Smoni1 - 29
Halbprofi (offline)

Dabei seit 10.2007
233 Beiträge

Geschrieben am: 22.04.2013 um 20:36 Uhr

Da ich selber im Moment nicht weiter komme, stelle ich nochmal meine ursprüngliche Frage:
Könnte mir jemand ein simples Beispiel Programm schreiben, welches eine Mp3 Datei in eine Wave Datei codiert?

Alle Menschen haben Fehler. Ich wünschte ich hätte auch welche.

h3mpti - 37
Profi (offline)

Dabei seit 05.2007
878 Beiträge

Geschrieben am: 22.04.2013 um 22:23 Uhr

Zitat von Smoni1:

Da ich selber im Moment nicht weiter komme, stelle ich nochmal meine ursprüngliche Frage:
Könnte mir jemand ein simples Beispiel Programm schreiben, welches eine Mp3 Datei in eine Wave Datei codiert?

Ich denke nicht dass dir hier jemand das Programm schreibt. Wenn du nicht weiterkommst könntest du auch einfach schreiben womit du genau nicht weiterkommst. Auch der Code den du momentan nutzt wäre vielleicht hilfreich.
Ansonsten würde ich einfach mal Google bemühen, zu dem Thema sollte es genügend Anleitungen geben.
Smoni1 - 29
Halbprofi (offline)

Dabei seit 10.2007
233 Beiträge

Geschrieben am: 22.04.2013 um 22:34 Uhr

Zitat von h3mpti:

Zitat von Smoni1:

Da ich selber im Moment nicht weiter komme, stelle ich nochmal meine ursprüngliche Frage:
Könnte mir jemand ein simples Beispiel Programm schreiben, welches eine Mp3 Datei in eine Wave Datei codiert?

Ich denke nicht dass dir hier jemand das Programm schreibt. Wenn du nicht weiterkommst könntest du auch einfach schreiben womit du genau nicht weiterkommst. Auch der Code den du momentan nutzt wäre vielleicht hilfreich.
Ansonsten würde ich einfach mal Google bemühen, zu dem Thema sollte es genügend Anleitungen geben.


Also mal sehen, womit komme ich nicht weiter...
Ich habe Beispiel Programme für den Lame encoder und wie oben gepostet für ffmpeg und allein in den beiliegenden Beispiel Programmen funktionieren die Befehle nicht und mein Compiler schütten Errors in Massen aus.
Deshalb wäre es für mich extrem hilfreich, wenn mir jemand ein kleines Programm schreiben könnte, dann könnte ich damit weiterarbeiten...

Zum Thema Google, ich suche jetzt viele, viele Stunden im Internet nach Lösungen für meine Probleme und Ziele und habe absolut nichts gefunden, was ich verstehe, was mir weiterhilft.

Alle Menschen haben Fehler. Ich wünschte ich hätte auch welche.

Rifleman - 40
Experte (offline)

Dabei seit 09.2003
1540 Beiträge
Geschrieben am: 22.04.2013 um 22:56 Uhr

Zitat von Smoni1:

Zum Thema Google, ich suche jetzt viele, viele Stunden im Internet nach Lösungen für meine Probleme und Ziele und habe absolut nichts gefunden, was ich verstehe, was mir weiterhilft.

Also ich weiss ja nicht, wie du suchst...
Jetzt mach mal folgendes:
Zieh dir den Quellcode von lame. Dann schaust du in das Verzeichnis /frontend und suchst die Datei lame_main.c
Dort findest du über der Funktion lame_decoder folgenden Kommentar:

Zitat:

/* the simple lame decoder */
/* After calling lame_init(), lame_init_params() and
* init_infile(), call this routine to read the input MP3 file
* and output .wav data to the specified file pointer*/
/* lame_decoder will ignore the first 528 samples, since these samples
* represent the mpglib delay (and are all 0). skip = number of additional
* samples to skip, to (for example) compensate for the encoder delay */

So etwas wolltest du, oder?

Es sind die kleinen Dinge, die einen zum Wahnsinn treiben.

Smoni1 - 29
Halbprofi (offline)

Dabei seit 10.2007
233 Beiträge

Geschrieben am: 22.04.2013 um 23:14 Uhr

Zitat von Rifleman:


So etwas wolltest du, oder?


Im Prinzip ja, genau das, mein erstes Problem ist jetzt nur, dass mir der Compiler schon beim Befehl lame_init() einen undefined reference Error ausgibt :/

Alle Menschen haben Fehler. Ich wünschte ich hätte auch welche.

Rifleman - 40
Experte (offline)

Dabei seit 09.2003
1540 Beiträge
Geschrieben am: 22.04.2013 um 23:23 Uhr
Zuletzt editiert am: 22.04.2013 um 23:26 Uhr

Zitat von Smoni1:

Zitat von Rifleman:


So etwas wolltest du, oder?


Im Prinzip ja, genau das, mein erstes Problem ist jetzt nur, dass mir der Compiler schon beim Befehl lame_init() einen undefined reference Error ausgibt :/

Wenn du lame.h eingebunden hast, muss die da sein. Im Header steht:

Zitat:

/*
* REQUIRED:
* initialize the encoder. sets default for all encoder parameters,
* returns NULL if some malloc()'s failed
* otherwise returns pointer to structure needed for all future
* API calls.
*/
lame_global_flags * CDECL lame_init(void);


/edit: Du musst natürlich gegen die lib linken...tust du das?

Es sind die kleinen Dinge, die einen zum Wahnsinn treiben.

  -1- -2- -3- vorwärts >>>
 

Forum / Bits und Bytes

(c) 1999 - 2025 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -