Voice over IP

Für allgemeine Fragen zur Programmierung mit PureBasic.
traumatic
Beiträge: 478
Registriert: 27.11.2004 15:42

Beitrag von traumatic »

DarkDragon hat geschrieben:@traumatic: Sag mir halt mal wie man eine bestimmte frequenz an die Soundkarte sendet, sodass sie eine bestimmte Zeit lang abgespielt wird. Ich weiß es gibt diese QPlay lib, aber die bringt mir auch nichts, wenn ich eine bestimmte frequenz ausgeben will. Und wie bekommt man diese Frequenz vom Mikrofon?
"Eine Frequenz eine bestimmte Zeit lang abspielen" hat ja mit der eigentlichen
Problemstellung nichts zu tun (Dazu braucht man keinen Stream),
aber vielleicht hilft Dir das folgende trotzdem ein wenig weiter:

Also, wie bereits weiter oben geschrieben, würde ich hierzu DirectSound
benutzen - ist am einfachsten und solidesten IMHO.

Du kannst in DirectSound auf einfache Art Buffer erzeugen und diese mit
Daten beschreiben, vom Prinizip her genauso wie man auch Surfaces, Texturen,
VertexBuffer etc. in D3D beschreibt (also lock(), daten rein, unlock()).

Spielst Du diesen Buffer (der meinetwegen so groß ist, um 1 Sekunde Audio
in 16bit, 22kHz aufzunehmen) in einer Loop ab und schmeisst immer schön
Daten in den Buffer, war's das im Grunde schon.

Bei "vom Mikrofon in die Soundkarte" ist das der gleiche Weg (nur andersherum;)).

Irgendjmd. aus diesem Forum (Sorry, ich kann mich nicht erinnern) hat mal
eifrig mit der Klangerzeugung mittels FMOD herumgespielt. Die Codes
kannst Du Dir ja mal anschauen (ob nun FMOD oder direkt DSound ist ja egal,
da passiert intern auch nichts anderes). Ansonsten würde ich Dir ein Studium
des WAV/RIFF Formats und der Klangsynthese im allgemeinen ans Herz
legen.
netshore
Beiträge: 6
Registriert: 12.09.2005 18:21
Wohnort: Eschweiler

Antwort

Beitrag von netshore »

Hallo,

meiner Meinung nach ist das relativ einfach. Du benutzt einfach eine Libary oder DLL wie OpenH323.org oder VaxVoIP SDK. Damit hast du alle nötigen Befehle zur Verfügung. Du musst sie nur noch einbinden.

Gruß
Netshore
teachco
Beiträge: 48
Registriert: 12.07.2005 19:44

Skype

Beitrag von teachco »

Auf der Skype-Website gibt eine API in C++. Vielleicht kann man die Skype-Technik ja verwenden.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

DarkDragon hat geschrieben:@traumatic: Sag mir halt mal wie man eine bestimmte frequenz an die Soundkarte sendet, sodass sie eine bestimmte Zeit lang abgespielt wird.
Meinnst du sowas? (JaPBe mit include Sound-Plus)

Code: Alles auswählen

InitSound()
laenge = 1000
hertz = 100
CreateSound(1,Hertz,laenge,20000)
PlaySound(1)
delay(laenge)
Wüsste aber jetzt nicht, was das mit VoIP zu tun hätte?

Gr33tz
Tafkadasom2k5

EDIT: :oops: War nicht ganz korrekt der Code udn auch falsche Include :oops: /:->
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Tafkadasom2k5 hat geschrieben:
DarkDragon hat geschrieben:@traumatic: Sag mir halt mal wie man eine bestimmte frequenz an die Soundkarte sendet, sodass sie eine bestimmte Zeit lang abgespielt wird.
Meinnst du sowas? (JaPBe mit include Sound-Plus)

Code: Alles auswählen

InitSound()
laenge = 1000
hertz = 100
CreateSound(1,Hertz,laenge,20000)
PlaySound(1)
delay(laenge)
Wüsste aber jetzt nicht, was das mit VoIP zu tun hätte?

Gr33tz
Tafkadasom2k5

EDIT: :oops: War nicht ganz korrekt der Code udn auch falsche Include :oops: /:->
Das war so lange her, dass ich auch schon mitbekommen hab wie es geht, aber ich dachte zuvor, dass man die aktuelle frequenz aus dem mikrofon rausliest, dann in den lautsprecher beim anderen pumpt und fertig isses. Dem ist aber nicht so ;) .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag von R4z0r1989 »

Ich grab das mal wieder aus *schaufel* *schaufel*

Weis einer vom euch wo ich das Direct sound herbekomme wenns ne lib is oder wie der befehl is wenn es PB schon integriert is???
Benutzeravatar
Creature
Beiträge: 678
Registriert: 29.08.2004 00:55
Wohnort: Frankfurt/Main

Beitrag von Creature »

ich hab mal gegoogeld und das hier gefunden:
Async Professional is a comprehensive communications toolkit for Borland Delphi, C++Builder, & ActiveX environments. It provides direct access to serial ports, TAPI, and the Microsoft Speech API. It supports faxing, terminal emulation, VOIP, & more.
http://sourceforge.net/project/showfile ... p_id=71007
Bildung kommt von Bildschirm und nicht von Buch, sonst hieße es ja Buchung.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8808
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Ich würde FMOD verwenden. Das ist IMHO am einfachsten zu handeln mit
den ganzen Eingabe- und Ausgabe-Buffern.


Das mit den Frequenzen ist im übrigen auch keine so dumme Idee, wenn man nur genug davon benutzt. Mit FFT (in FMOD integriert) kann man Sounds
in ihre einzelnen Frequenzen zerlegen und später über Sin(Frequenz * t + Phase) * Amplitude
wieder zusammensetzen. Das klingt jetzt wieder einfach, ist es aber nicht. Es
ist aber auch ein Prinzip der MP3-Komprimierung.
Wenn man also einen MP3-Kompressor für streaming findet oder selbst
codet und benutzt, könnte man schonmal mehr Qualität aus dem ganzen
rausholen und es auch auf das Internet ausweiten.
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag von R4z0r1989 »

kann mir mal nur einer ein beispiel machen wie ich 1 sekunde vom mic in den buffer bekomm und 1 sekunde vom buffer wieder auslesen kann!
teachco
Beiträge: 48
Registriert: 12.07.2005 19:44

Skype-Funktionen in Visual-Basic nutzen

Beitrag von teachco »

Hallo PB-Freunde,

gerade habe ich einen netten Video-Stream gefunden, der erklärt, wie man Skype in sein VB-Programm einbindet. Das sollte doch auch für PB möglich sein. Daher zunächst mal die Frage, wie man anfängt. SKYPEAPILib muss erstmal eingebunden werden. Geht das überhaupt und wenn ja wie?

Hier mal die Links, um sich selbst ein Bild zu machen. Vertonung ist leider in Plattdütsch. :D

https://developer.skype.com/Tutorials/ApiIntro

https://developer.skype.com/Tutorials/VisualBasic1
Antworten