2009-11-29 12 views
12

Ich war schon immer neugierig auf Audio-Konvertierungs-Software, aber ich habe noch nie eine richtige Erklärung aus der Sicht eines Anfängers gesehen, wie man ein einfaches Programm schreibt, das zum Beispiel eine MP3-Datei in eine WAV konvertiert. Ich frage nicht nach irgendwelchen komplexen Algorithmen, nur ein kleines Beispiel mit einer einfachen Bibliothek. Suche auf SO, kam ich mit mehreren Namen bis einschließlich:Absolute Anfänger Anleitung zum Arbeiten mit Audio in C/C++?

  • Lame
  • Die Synthese Toolkit
  • OpenAL
  • DirectSound-

Aber ich bin nicht in der Lage ein einfaches Beispiel zu finden, irgendwelche dieser Bibliotheken. Normalerweise macht es mir nichts aus, durch jede Menge Code zu waten, aber hier habe ich absolut kein Wissen über das Thema und so habe ich immer das Gefühl, dass ich im Dunkeln fotografiere.

Jeder hier haben ein einfaches Beispiel/Tutorial zum Konvertieren einer Sounddatei mit einer dieser Bibliotheken? Meine Frage bezieht sich speziell auf C/C++, da dies die beiden Sprachen sind, die ich gerade lerne, und ich möchte mich weiterhin auf sie konzentrieren.

Bearbeiten: Eine Sache, die ich vergessen zu erwähnen: Ich bin auf einem * NIX-System.

+0

Es ist eine sehr schwierige Frage, weil Sie normalerweise nicht abstrakt mit Audio umgehen, Sie wollen es spielen - und das hängt von der Betriebssystem-API ab. Die API muss geschrieben werden, um die Spüle zu behandeln. –

Antwort

3

Vielen Dank für die Antworten! Ich sortierte sie zusammen, um erfolgreich ein kleines Dienstprogramm zu erstellen, das eine AIFF/WAV/etc-Datei in eine MP3-Datei konvertiert. Es scheint ein gewisses Interesse an dieser Frage zu sein, es so hier, was ich tat, Schritt für Schritt:

Schritt 1: Herunterladen und Installieren der libsndfile Bibliothek wie von James Morris vorgeschlagen. Diese Bibliothek ist sehr einfach zu benutzen - ihr einziger Mangel ist, dass sie nicht mit MP3-Dateien funktioniert.

Schritt 2: Schauen Sie sich den Ordner 'examples' an, der mit libsndfile geliefert wird und generate.c finden. Dies gibt ein schönes Arbeitsbeispiel für die Konvertierung von Nicht-MP3-Dateien in verschiedene Dateiformate. Es gibt auch einen Einblick in die Macht hinter libsndfile.

Schritt 3: Borrowing Code aus generate.c, habe ich eine C-Datei, die eine Audio-Datei in eine WAV-Datei nur konvertiert. Hier ist mein Code: http://pastie.org/719546

Schritt 4: Herunterladen und Installieren der LAME encoder. Dadurch werden sowohl die Bibliothek libmp3lame als auch das Befehlszeilenprogramm lame installiert.

Schritt 5: Jetzt können Sie LAME API oder Gabel & exec einen Prozess durchgehen zu lähmen Ihre WAV-Datei in eine MP3-Datei zu konvertieren.

Schritt 6: Holen Sie den Champagner und Kaviar!

Wenn es einen besseren Weg gibt (ich bin sicher, es gibt) um dies zu tun, lass es mich wissen. Ich persönlich habe noch nie eine Schritt-für-Schritt-Roadmap wie diese gesehen, also dachte ich, ich würde sie dort veröffentlichen.

0

Überprüfen libmad http://mad.sourceforge.net "" M "peg" Eine "udio" D "ecoder library", sollte ein gutes Beispiel geben. Überprüfen Sie SDL http://www.libsdl.org/ auch auf eine einfache plattformübergreifende Audiobearbeitung. Hoffe, dass hilft.

+0

Ich habe dieses funktioniert, aber das Beispiel erstellt. PCM-Dateien, die ich nicht herausfinden kann, wie zu spielen ist. Verwandte Frage auf superuser.com hier: http://superuser.com/questions/76665/playing-a-pcm-file-ona-a-unix-system –

+0

Update: Ich kann die PCM-Dateien in Audacity importieren, indem Sie auf Projekt gehen > Rohdaten importieren. –

1

Wenn Sie sich für DSP und Computer interessieren, werfen Sie einen Blick auf das Synthesis Toolkit. Es ist süß. Es ist zum Lernen gedacht. Die Beispiele und Tutorials auf ihrer Website sind einfach und gründlich. Denken Sie daran, die Jungs, die es geschrieben haben, haben es geschrieben, damit sie akustische Modelle von echten Instrumenten erstellen können. Als Ergebnis haben sie einige Instrumente enthalten, die einfach nur verrückt sind, aber Spaß machen. Es vermittelt Ihnen ein grundlegendes Verständnis für die Verarbeitung von PCM-Sound. Und Sie werden wahrscheinlich in der Lage sein, einige lustige kleine Krachmacher zusammen zu hacken, während Sie dabei sind.

https://ccrma.stanford.edu/software/stk/

2

Für libsndfile http://mega-nerd.com/libsndfile/

Libsndfile überprüfen zwischen verschiedenen Formaten (außer MP3) Umwandlung ist eine Bibliothek entwickelt, um das Lesen und Schreiben von vielen verschiedenen gesampelten Sounddateiformate ermöglichen (z als MS Windows WAV und Apple/SGI AIFF-Format) durch eine Standard-Bibliothek-Schnittstelle.

Während Lese- und Schreiboperationen werden Formate konvertiert nahtlos zwischen dem Format der Anwendung Programm angefordert oder geliefert und das Datenformat der Datei.Die Anwendungsprogrammierer können völlig ahnungslos von Fragen bleiben wie Datei Bytereihenfolge und Datenformat

Es ist auch einfach zu bedienen, mit der API nach dem Stil der Standard-C-Bibliothek Funktionsnamen:

http://mega-nerd.com/libsndfile/api.html

Und Beispiele sind in der Quelldistribution enthalten.

Für die eigentliche Audioausgabe wird eine andere Bibliothek benötigt, SDL ist, wie bereits erwähnt, ein guter Ausgangspunkt. Während SDL auch Audiodateien lesen/schreiben kann, ist libsndfile weit überlegen.

Verwandte Themen