waveform Audio
-
Hi!
Ich nehme per waveform über mein Micro Sounds auf. Dafür gibt es folgende Parameter:// Init Audio waveform.nChannels = AUDIOCHANNELS; waveform.wBitsPerSample = 8; waveform.nAvgBytesPerSec = AUDIOSPEED * waveform.nChannels * waveform.wBitsPerSample / 8; waveform.wFormatTag = AUDIOFORMAT; waveform.nSamplesPerSec = AUDIOSPEED; waveform.nBlockAlign = 1; waveform.cbSize = 0;
Hat jemend Ahnung, wie ich nun die Qualität meiner Aufnahme kalibrieren kann? Ich hab zwar schon herumprobiert, z.B. BitsPerSample auf 16 gesetzt, nur wird dann plötzlich waveInOpen() nicht mehr erfolgreich ausgeführt.
Danke schon mal für eure Hilfe!
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ 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.
-
http://msdn.microsoft.com/en-us/library/ms713497(VS.85).aspx
Du solltest halt bedenken, dass andere Größen auch von wBitsPerSample abhängen (z.B. nBlockAlign sollte bei 16Bit auf 2 gestellt werden). Steht auch so oben in der Hilfe.
-
Ok, danke für die hilfreiche Seite.
Nun bin ich gerade im Überlegen, welches WAVE_FORMAT ich am besten wählen sollte. Ich arbeite momentan an Audiostreaming, d.h. ich möchte die Größe möglichst gering halten.
Wenn ich WAVE_FORMAT_MPEG3 verwende, also MP3, muss ich dann Lizenzgebühren zahlen?
Kann man VORBIS auch irgendwie verwenden? Ich habe es in Mmreg.h nicht gefunden.
-
Soweit ich weiss kannst du bei waveInOpen nur Formate verwenden, die die Soundkarte (bzw. deren Treiber) direkt unterstützt. z.B. kannst du keine 24 Bit Formate bekommen, wenn die Soundkarte bloss 16 Bit kann. Daher würde es mich wundern wenn du von der Soundkarte MP3 bekommen könntest, da ich keine Soundkarte kenne, die MP3 direkt unterstützt.
D.h. du wirst das Wave-Device mit z.B. PCM, 16 Bit, 48 kHz aufmachen müssen, und die Umwandlung in ADPCM, MP3, µLaw oder ähnliches dann selbst vornehmen.Oder aber du verwendest eine API wie DirectShow. Wobei das nicht unbedingt als Empfehlung zu verstehen ist, denn DirectShow ist nicht gerade einfach, speziell wenn man eigene Filter programmieren muss (was in deinem Fall u.U. der Fall sein könnte, nämlich wenn du keine passenden Renderer-Filter fürs Streaming findest).
-
Hmmm... meinen Tests zu Folge ist WAVE_FORMAT_MULAW in Qualität pro verbrauchter Datenmenge besser als PCM.
Aber anscheinend ist dies zu 8-bit Mono limitiert?!Hat jemand Erfahrung mit Audiostreaming? Welches Format eignet sich am besten?
Ist jetzt vl. ne blöde Frage, aber wie kann ich etwas in VORBIS zur Laufzeit umwandeln? Gibts da open source Bibliotheken?
Und ist das nicht ziemlich langsam?
-
Was das beste ist kommt darauf an wieviel Bandbreite du verwenden willst bzw. kannst.
Ja, für VORBIS gibts was, nämlich die libvorbis.
Nein, das sollte nicht "ziemlich langsam" sein (immer diese schwammigen Begriffe -- ab wann ist etwas "ziemlich langsam"?), es sei denn du willst 100 Streams gleichzeitig komprimieren.
-
Meine Zielbandbreite wäre ~3 kB/s pro Teilnehmer. Also jeder der spricht sollte max. 3 kB/s verbrauchen.
Ziemlich langsam war so gemeint, dass es die Leistung eines nebenbei Laufenden Computerspiels merkbar beeinträchtigt.
Ok, also ich habe jetzt libvorbis.lib meinem Projekt hinzugefügt. Hab mir diverse Beispiele und Header angesehen und werde absolut nicht schlau daraus. Erstens scheint es einen Unterschied zu geben, ob ich über ein Netzwerk per z.B. UDP streame, oder ob ich eine Datei verwende.
Natürlich ist das mitgelieferte Beispiel für eine Datei geschrieben ^^Kennt sich jemand damit aus? Kann mir jemand ein einfaches Beispiel zeigen wie ich meine Aufgenommene Audiospur nun umwandle bzw. was genau muss ich überhaupt umwandeln? Zur Info: Hdr->lpData ist der Teil, der gesendet wird also schätze ich mal, dass genau das encodiert werden muss.
Ist es egal ob das Ausgangssignal per PCM und uMUL aufgenommen wird?
Danke für eure Hilfe!
-
Ich nehme an mit "uMUL" meinst du "µLaw".
Und wenn du die aufgenommene Audio-Spur weiterverarbeiten willst solltest du grundsätzlich immer PCM aufnehmen.bzw. was genau muss ich überhaupt umwandeln?
Die Audio-Daten