Aufnehmen und Abspielen



  • Hallo,

    ich bin nun fast am verzweifeln...

    Und zwar suche ich ein Sample Code,
    wie ich ohne MFC von einem Microfon aufnehmen kann und es gleichzeitig wieder Ausgebe...

    Also eine Art Telephonie Programm soll es werden...

    Dazu soll keine Datei angelegt werden wo der Sound gespeichert wird sondern direckt der Buffer wieder ausgegeben werden..

    Ich hab es jetz versucht mit waveInOpen und waveOutOpen nur ich bekomme es leider nicht hin

    Kann mir von euch vieleicht einen kleinen Source Code geben, wo ich einfach nur in mein Micro spreche und mich danach sofort in den Boxen hören kann ?

    Ich hoffe ihr könnt mir helfen !!!

    Vielen Dank !!!



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Einfach nur ein Code-Beispiel nehmen bringt Dir nur etwas, wenn es genau Deinen Vorstellungen entspricht. Sobald Du aber was ergänzen oder verändern willst, kommst Du ohne Grundwissen nicht weiter.

    So gehts:
    Mit waveInOpen ein Input-Device öffnen, aber nicht starten. Mindestens 4 Buffer anlegen (mit AllocateBuffer (), Allocate&InitWaveHeader(), waveInPrepareWaveHeader(), waveInAddBuffer()). Eine Callback-Funktion bereitstellen (kann auch die Windows-Callback-Funktion sein).

    Mit waveOutOpen ein Ausgabegerät öffnen, aber nicht starten (waveOutPause()).

    Aufnahme starten (waveInStart()).

    Beim Auftreten von WIM_DATA: waveInUnPrepareWaveHeader(), waveOutPrepareWaveHeader(), waveOutWrite(). Sind genug Buffer aufgenommen worden, dann waveOutRestart().

    Beim Auftreten von WOM_DONE: waveOutUnPrepareWaveHeader(), waveInPrepareWaveHeader(), waveInAddBuffer().

    Zusätzlich ist noch eine Stop-Bedingung zu implementieren. Dabei ist zu beachten, das die Buffer je nach Bindung (frei, Input-Device, Ausgabe-Device) richtig freigegeben werden. Was mit den Buffer-Daten passiert, liegt in Deinem Ermessen.

    Wenn Du die vom Input-Device gefüllten Buffer (WIM_DATA) noch bearbeitest (z.B.: Rauschen und Störgeräusche eliminieren, Lautstärke normalisieren, ...), hast Du schon eine simple "Sprachverarbeitung".

    Wenn es mal eine (Internet-)Telefonie werden sollte, so brauchst Du nur die gefüllten Buffer übers Netz zu einem anderen PC zu senden und die von dort ankommenden Buffer auf Dein Ausgabe-Device zu geben. Allerdings solltest Du unbedingt was vorsehen, wenn Buffer-Verlust oder -Verzögerungen auftreten.

    Blackbird


Log in to reply