Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Audiostream vom Microphon (https://www.delphipraxis.net/79120-audiostream-vom-microphon.html)

Zacherl 16. Okt 2006 18:05


Audiostream vom Microphon
 
Hi,

weiß jemand, wie ich einenen Audiostream vom Micorphon realisieren kann. Das ganze soll so aussehen, dass auf einen Cpmputer ein Indy TCP Client läuft, der den Input, der über den eingestellten Sound Eingang reinkommt an einen Server verschickt ... der Server soll dann auf dem anderen Computer den Stream kontinuierlich wiedergeben.

Danke Florian

Eichhoernchen 16. Okt 2006 19:41

Re: Audiostream vom Microphon
 
Hmm, einfach ist das glaube ich nicht, du kannst aber wenn ich mich richtig erinnere den Soundeingang über die mmsystem funktionen:

waveInOpen();
waveInPrepareHeader();
waveInAddBuffer();
waveInStart();

ansprechen.

Zuerst musst du waveInOpen aufrufen, das öffnet sozusagen den device, und du kannst ne Callbackfunktion angeben, in der kannst du dann deine Daten behandeln, außerdem musst du der Funktion nen Pointer auf ne TWAVEFORMATEX strucktur übergeben, darin sind die Infos, wie z.B. Sampelrate oder Anzahl der Kanäle(mono, stereo).

Danach musst du deine Daten preparieren mit der waveInPrepareHeader.
Diese übergibst du das Handel des devices, das du von waveINOpen bekomsmten hast(1. Parameter).
Sowie eine Adresse auf eine TWaveHdr Strucktur. Diese muss du mit deinem Buffer, Buffergröße und dwflag auf 0 füllen.

Jetzt musst du deine Infos an das Soundevice schicken. mit der waveInAddBuffer.
Wenn der buffer voll ist, wird das WHDR_DONE bit in der dwFlag vom TWaveHdr gesetzt, so kannst du in der callback funktion überprüfen, ob der buffer voll ist.

Um dann nun das Aufnehmen in den Buffer zu starten wird die waveInStart() aufgerufen.

So, ich weiß nicht ob das alles exakt stimm, ich weiß das nur von den Midi funktionen. Jedoch sehen die sehr ähnlich aus, nur das man hier eben noch den Soundtyp (TWAVEFORMATEX) angeben muss, sonst ist alles gleich.

Such am besten bei google wie du das machen kannst, ich kann gerne mal meinen code Posten, wie ich SysEx Commands über den Midiinput aufnehme!

Außerdem musst du mal gucken, welche Messages an die Callbackfunktion geschickt werden um zu wissen, wann du was aus dem buffer in deinen Stream speichern kannst.


Wie du das ganze dann per indy verschickst, kann ich dir nicht sagen aber ich denke das ist nicht umbedinngt das schwerste. Nur das du zuviele Daten haben wirst, für ne gute übertragung, daher wirst du bestimmt komprimieren müssen, so wie es auch TeamSpeak(ist ein Delphi programm) tut. Ich glaube dort wird unteranderem Speex zum komprimieren genutzt.


Hoffe, dass dir das Hilft.

Eichhoernchen

Union 16. Okt 2006 19:41

Re: Audiostream vom Microphon
 
Hi,

das geht mit DEAudio. Im Event TDeAudioSource.OnAudioRecorded oder TDeAudioConvertorIn.OnAudioConverted kannst Du dann auf den Audiopuffer zugreifen und ihn so auf die Reise schicken:
Delphi-Quellcode:
Client.WriteInteger(AudioDataSize);
Client.WriteBuffer(AudioData^, AudioDataSize);
Beim Empfang dann im TIdTCPServer.OnServerExecute:
Delphi-Quellcode:
type
   TBuf = Array[1.32768] of byte;
...
var
   srvbuf : TBuf;
...
// Grösse lesen
Size:=AThread.Connection.ReadInteger;
// Datenpuffer lesen
AThread.Connection.ReadBuffer(SRvBuf, Size);
// Abspielen
deAudioOut.PlayAudio(@SrvBuf, Size);
[edit]Link korrigiert :oops: [/edit]

Zacherl 17. Okt 2006 12:15

Re: Audiostream vom Microphon
 
Hey danke euch beiden! :thumb: Damit sollte ich es schaffen.

Florian

Eichhoernchen 17. Okt 2006 15:20

Re: Audiostream vom Microphon
 
hab HIER noch was dazu gepostet.

Zacherl 17. Okt 2006 19:46

Re: Audiostream vom Microphon
 
Cool ... ich gucks mir gleich mal an.

Florian

flossinger 21. Okt 2006 20:37

Re: Audiostream vom Microphon
 
Hallo,

das geht schon so, wie Eichhörnchen in Beitrag Nr. 2 schreibt. Nur sollte man durch die Verwendung von zwei Puffern das Knacken im Stream vermeiden. >>>==> Hier habe ich beschrieben wie das funktioniert.

grüsse,
der flossinger

thebier 29. Mär 2011 19:02

AW: Audiostream vom Microphon
 
Hi, ich weiß der Thread is schon etwas älter, aber kann mir einer helfen? Ich werd leider net schlau aus den Quellstücken
MfG thebier

Aphton 29. Mär 2011 21:07

AW: Audiostream vom Microphon
 
nein

thebier 29. Mär 2011 21:42

AW: Audiostream vom Microphon
 
Danke für die qualifizierte Antwort. Das heißt für mich, kann oder will mir keiner helfen?

Aphton 29. Mär 2011 22:09

AW: Audiostream vom Microphon
 
Die Antwort ist überaus qualifiziert, nur die Frage nicht -.-'

Luckie 30. Mär 2011 00:42

AW: Audiostream vom Microphon
 
Nun ja, so lange du uns nicht sagst wo es hapert, wird es etwas schwierig bis unmöglich dir zu helfen.

MrSpock 30. Mär 2011 06:37

AW: Audiostream vom Microphon
 
Zitat:

Zitat von Aphton (Beitrag 1091850)
nein

In dieser Form ist die Antwort bestenfalls suboptimal ;-)

Es wäre sinnvoll eine Begründung dafür anzugeben, warum keiner helfen kann, z.B. weil die Frage zu allgemein gestellt ist und nicht klar ist, wo der Schuh drückt.

Aphton 30. Mär 2011 13:18

AW: Audiostream vom Microphon
 
Er hat gefragt, ob man ihm helfen kann.
Unter den gegebenen Umständen - und zwar haben wir 0 Information bzgl. des Problems erhalten - ist es rein technisch unmöglich, ihm zu helfen. Daraus folgt ein "Nein" mit einem bösen Nachgeschmack - denn der Fragesteller soll sich schon Gedanken darüber machen, wie er den Helfenden beim Helfen helfen kann xD

thebier 30. Mär 2011 16:19

AW: Audiostream vom Microphon
 
Gut, vielleicht hab ich mich etwas dürftig ausgedrückt

Es geht um folgendes:
Wir müssen in der Schule von der Technik AG aus ein Audio Signal per Funk (Kabel ist nicht möglich, da man es zu stark sehen würde) vom Mischpult zur Box übertragen. Da wir keinen Sender oder Empfänger besitzen, habe ich mir überlegt, dass ich das ganze über Wlan löse. Einfach mit Vista ein Netzwerk simulieren und die Daten übertragen.

Nun zu meinem Problem mit der Software:
Ich habe mein Programm soweit, dass es über TServerSocket und TClientSocket Daten verschickt. Die DeAudio Komponente hab ich auch. Das Problem ist nur, wie ich die Daten des Mikrophons abgreife, damit ich sie als Buf versenden kann. Zudem darf das Signal kaum verzögerung haben, da es nur ie Monitorbox speist, und der Rest der Boxen über in der Wand installierte Kabel geht.

rollstuhlfahrer 30. Mär 2011 16:30

AW: Audiostream vom Microphon
 
So dann jetzt: Du kannst kein Tonsignal verzögerungsfrei über ein WLAN schicken. Ich hatte jetzt spontan an einen Stream gedacht, aber der hat ja auf beiden Seiten Puffer, die so groß sind, dass man die Latenz hören kann.

Bernhard

thebier 30. Mär 2011 16:31

AW: Audiostream vom Microphon
 
geht das nicht im Millisekunden Bereich? Auch nicht wenn man die Puffergröße runterschraubt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz