C++ Sound von Soundkarte aufnehmen - Qualitätsprobleme

daemon777

Lt. Commander
Registriert
Dez. 2003
Beiträge
1.371
Hi Leute,

dieses Mal habe ich ein völlig anders geartetes Problem. Und zwar will ich die Ausgabe der Soundkarte abgreifen und anschließend als mp3 speichern. Mein erster Versuch war hier das "Stereo Mix"-Device mittels QAudioRecorder von Qt abzugreifen und anschließend abzuspeichern. Allerdings ist hier die Qualität absolut grauenhaft. Das reicht vielleicht gerade noch für Sachen wie VoIP aber wenn es um mehr geht als nur ein "ich kann erahnen was das sein soll", dann reicht das im Moment irgendwie einfach nicht aus. Auch habe ich das Gefühl, dass sämtliche Einstellungen, die ich hier bei den Audioinformationen angebe, zu keiner Änderung führen.
Der Klang ist einfach etwas blechern, dumpf und die Tiefen scheinen ganz abgeschnitten zu sein.

Jetzt wollte ich hier mal fragen, ob jemand schon eine zufriedenstellende Lösung fürs Soundaufnehmen gefunden hat und mir vielleicht einen Wink in die richtige Richtung geben kann.

Ein paar Möglichkeiten habe ich auch schon bei meiner Recherche gefunden:
1. Vielleicht einfach den Raw-Input verwenden mittels QAudioInput (ok das ist meine eigene Überlegung)
2. Eine Bibliothek namens PortAudio für diesen Zweck verwenden
3. OpenAl für diesen Zweck verwenden

Das wären noch die Möglichkeiten, die (vermutlich) halbwegs elegant zu machen wären. Da jetzt tief in die Domänen der Windows-Multimedia-Programmierung abzutauchen erscheint mir nicht ganz so zielführend.

Ich wäre echt dankbar, wenn da jemand eine Idee hätte :)

viele grüße
daemon
 
Ich war schon fast am Schreiben, als mir die Idee gekommen ist doch mal zu prüfen, ob der mpeg-Codec überhaupt supported wird. Und siehe da: irgendwie kann ich derzeit nur den pcm-Codec verwenden.

Da es mir aber möglich ist auch mit Qt mp3-Dateien abzuspielen finde ich es jetzt doch etwas merkwürdig, dass die anderen Codecs hier nicht gefunden werden können.

Update:
Es scheint tatsächlich derzeit noch nicht möglich zu sein hier direkt einen anderen Codec als pcm zu benutzen. Da werde ich wohl hinterher nochmal eine externe Bib wie Lame benutzen müssen.

Wenn ich aber den RAW-Container benutze und die anderen Werte halbwegs vernünftig einstelle, dann funktioniert es immerhin, wie gewünscht. Ob das Ergebnis damit tatsächlich wie das Original wird, weiß ich jetzt noch nicht, aber es kommt dem Ganzen mittlerweile zumindest deutlich näher.
Ich vermute einfach mal, dass bei dem Versuch einen nicht-supporteten Codec zu benutzen auch die anderen Einstellungen resettet wurden.
 
Zuletzt bearbeitet:
Auch wenn die Qualität an sich jetzt nicht mehr das Problem ist, so habe ich festgestellt, dass die Tiefen komplett fehlen. Eigentlich hätte ich am Liebsten eine 1:1-Kopie des Sounds von vorher. Es ist eben schon albern wenn man zB ein Computerspiel aufnimmt und die Bässe komplett fehlen. Leider habe ich absolut keine Idee, woher das kommen könnte.
 
Zurück
Oben