Audio Library
-
Hi,
ich weiß nicht genau, in welche Kategorie das Thema gehört, deswegen packe ich das einfach mal hier her.
Ich bin seit einigen Tagen auf der Suche nach einer externen Library für Audio Angelegenheiten. Ich habe schon PortAudio ausprobiert, aber bin damit nicht zu frieden. Ich möchte folgenden Punkte abdecken:
- Aufnahme als wave
- Konvertierung in mp3
- Playback der mp3
- Trimmen der mp3 (oder wave)Ich weiß, dass gerade der letzte Punkt (das Trimmen) schwierig werden kann und das ich auch einige Probleme mit dem MP3-Format kriegen werde, da es komprimiert ist.
Das ganze soll für windows (win32) sein. Entschuldigt, wenn ich damit in der falschen Kategorie gelandet bin.
LG, Martek
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
martek schrieb:
Ich möchte folgenden Punkte abdecken:
- Aufnahme als wave
- Konvertierung in mp3
- Playback der mp3
- Trimmen der mp3 (oder wave)Dafür brauchst Du wahrscheinlich mehr als nur eine Bibliothek -- im schlimmsten Fall vier. Eine, die Soundkarten-Ein/Ausgabe macht, eine, die das mp3 encoding übernimmt, eine, die das Decoding übernimmtPCM und eine, die MP3 schnippeln kann.
MP3 schnippeln ist so eine Sache. Man kann das Frame-basiert machen. Allerdings gibt es da noch das "Bitreservoir". Im Wesentlichen hängen die Frames voneinander ab. Wenn man in der Mitte einer MP3-Datei etwas rausschneidet, dann wird man sehr wahrscheinlich am Anfang irgendwelche komischen Gurgel/Zisch/WasWeissIch-Effekte hören, weil das Bitreservoir des Dekoders nicht mit den richtigen Bits von vorherigen Frames gefüllt wurde. Ich kenne eigentlich nur ein Programm, welches MP3 ordentlich schneiden kann und das Problem mit dem Bitreservoire löst: pcutmp3. Das ist allerdings in Java geschrieben. Mag sein, dass es inzwischen auch andere Open-Source Proggies gibt, die das ähnlich machen und vllt sogar in C geschrieben sind.
-
Okay, wenn ich also mit mehreren Arbeiten muss, ist das so. Ich hab PortAudio schon am laufen, damit kann ich ja das PCM aufnehmen übernehmen. Das Soundkarten Problem sollte damit nicht auftreten.
Was haltet ihr von LAME zum konvertieren? Kann ich damit auch mp3 playback abdecken?
Für das Trimmen hatte ich mir überlegt, dass ich die mp3 ja in PCM-Format konvertieren könnte und dann schneiden, das wäre doch bestimmt einfacher oder nicht?
EDIT: Ich versuche gerade mit libsndfile und portaudio ne wav-datei aufzunehmen. Das Abspielen klappt schon, aber bei der Aufnahme hängts noch..
Außerdem würde ich gerne ein Bild der Wave-Spur haben. Wie gehe ich am besten dafür ran?
-
martek schrieb:
Was haltet ihr von LAME zum konvertieren? Kann ich damit auch mp3 playback abdecken?
LAME ist sehr gut zum konvertieren. Afaik kann es aber nichts abspielen.
Für das Trimmen hatte ich mir überlegt, dass ich die mp3 ja in PCM-Format konvertieren könnte und dann schneiden, das wäre doch bestimmt einfacher oder nicht?
Ja, das ist so ziemlich die einzige saubere Möglichkeit.
Außerdem würde ich gerne ein Bild der Wave-Spur haben. Wie gehe ich am besten dafür ran?
Das kommt darauf an, was genau du da sehen willst
-
Also die Konvertierung in MP3 mit Lame funktioniert auch schon und an der Dekodierung in PCM zum Abspielen (Schneiden) bin ich mit lame (mpg123) grade dran. Dann habe ich jetzt nur noch das Problem mit dem Schneiden.
Zu der Waveform: Ich hätte diese gerne einfach als Bild, damit ich dem User grafisch die Datei darstellen kann und so das Schneiden vereinfache. Die Waveforms sollten so wie bei jedem handsüblichen DAW aussehen.
Wie kann ich denn das Schneiden am besten übernehmen? Das konvertieren zwischen MP3 und PCM hab ich ja, aber wie schneide ich denn PCM-Daten?