Auf Mikrofon zurgreifen (DirectX)
-
guten Tag,
ich habe vor ein kleines Tool für Sprachchat zu programmieren.
da ich schon Direct3D, DirectInput und DirectShow gearbeitet habe, entschied
ich mich, für dieses Vorhaben auch DirectX zu verwenden.
Ich verwende hierzu Visual C++ 2005 Express mit Platform SDK und DirectX SDK December 2006.
Ich würde mich freuen, wenn mir jemand erklären kann, mit welchem Teil von DirectX ich überhaupt auf sowas zugreifen kann, und wie ich dann z.B. die Audiostreams übertragen kann.Schonmal danke im voraus
MfG DrakoXP
-
Hi, ich kann dir nicht wirklich sagen wie du sowas selber angehst, aber vielleicht lohnt sich der Blick in Existierenden code..
Rak'kar hat so etwas in seiner Netzwerk Bibliothek implementiert. Vielleicht lohnt es sich ja eher seine Lib zu verwenden.
http://www.rakkarsoft.com/- Staati
-
-
dazu musst du directsound verwenden. dort kannst du dann ziemlich wie gehabt ein aufnahmedevice erstellen. die buffer zuweisen und dann kanns schon fast losgehen. wirklich viel texte darüber habe ich auch nicht gefunden. in der directx-dokumentation hat es jedoch ein beispiel ("capturing wavefoms"), oder so.
wie du die audiodaten übertragen kannst weis ich auch nicht so recht. so viel ich weiss solltest du dazu eine udp verbindung benützen, sicherlich die menge der daten entsprechend reduzieren.
grs Grave
-
also erstmal danke für die Antworten.
ich glaube, ich werd mir mal DirectSound die Tage bisschen unter die Lupe nehmen.
Die Übertragung selbst ist nicht das Problem, mit Socktes kenne ich mich aus,
mein Problem ist eher, wie bekomme ich die Buffer verschickt?
denn das sind ja nicht einfach Objekte oder so, sondern Interfaces.
da hab ich keine Ahnung, wie ich das verschicke.
-
um die buffer verschicken zu können musst du deren inhalt auslesen. dies sind bei meinem programm short werte. du müsstest also ständig den buffer der die daten vom mikrofon erhält auslesen und diese an den remote user schicken.
das müsste wohl mit streaming gemacht werden.
ich empfehle dir zuerst ein programm zu machen, das einigen sekunden aufnimmt und die daten dann z.b in einer datei speichert (z.b gleich als wav-file).
grs Grave