![]() |
Audiostreaming über TCP oder UDP
Hallo
Ich weiss ich weiss, dieses Thema gabs schon oft... Ich hab es auch mal gefunden als ich es nicht brauchte... Doch jetzt, wo ich es brauche finde ich die passenden Links und beiträge nicht :D Ich hoffe ihr könnt mir schnell ein paar davon Posten... Und dan häte ich noch ne eigentliche Frage.. Ist es möglich, den "Sound" aus dem Mikrofon mittels UDP zu versenden? Ich weiss das sich UDP nicht darum kümmert, ob die Packete ankommen.... :D Liebe Grüsse Claudio |
Re: Audiostreaming über TCP oder UDP
Zitat:
dann solltest Du doch die Antwort kennen... An sich kannst Du natürlich alles mit UDP verschicken, warum sollte das nicht gehen? Die Frage sollte eher lauten ob es sinnvoll ist. Da ist jetzt die Frage, was Du machen möchtest? Soll etwas live übertragen werden, so spielt die Reihenfolge in der die Pakete ankommen eine wichtige Rolle. Sehr stark vereinfacht gehe ich einfach mal davon aus, dass jedes Wort in genau einem UDP-Paket landet. Überträgst Du nun n Worte, können dabei welche verloren gehen. TCP bemerkt das und würde ein verlorenes Wort nachfordern. Kostet Zeit und andere Pakete (die ggf. später abgeschickt wurden) kommen parallel oder vor dem verlorenen an. Entsprechend würde sich der Ton anhören (Verzögerungen ggf. sogar neue Sortierung, ...). Bei UDP geht das Paket einfach nur verloren. Zurück zur Realität, da steckt natürlich nicht ein ganzes Wort in einem Paket. Das also ggf. etwas verloren geht merkt man nicht immer, UDP ist also sinnvoll für Live-Übertragungen, da man hier die Netzlast und Verzögerungen gering hält, setzt aber natürlich trotzdem (oder gerade?) einen guten Kanal mit wenig Verlusten vorraus. Gruß, Der Unwissende |
Re: Audiostreaming über TCP oder UDP
Danke für deinen Langen Post
Ja ich möchte einen Live-Chat realisieren... In demfall am liebsten über UDP Hast du per zufall noch irgendwelche Links oder so für mich? :D |
Re: Audiostreaming über TCP oder UDP
Wie kann ich aus AData in einen Stream schreiben?
Ich konnte bereits über UDP nen String versenden :D Nun möchte ich Aus einem Stream in einen Stream schreiben.... Stimmt es eigentlich, das ich für einen Voice Chat einen Client und einen Server im Porgramm benötige?? Client sendet den Ton und der Server empfängt?? Oder reicht die Server Komponente? Danke schonmal |
Re: Audiostreaming über TCP oder UDP
von Stream to Stream kopierst du mit copyStream.
Bei UDP gibts keine Unterscheidung zwischen Server und Client. Warum es die meisten Komponenten trotzdem tun ist mir Schleierhaft. Bei Indy habe ich festgestellt, dass die Serverkomponente ausreicht. |
Re: Audiostreaming über TCP oder UDP
Ok Danke... Dan werd ich den Client rausnehmen
Ok copyStreammm danke das war aber eigentlich nicht meine frage... Ich möchte ja schlussendlich den Mikro Eingang Übertragen, und dies muss ich ja als Stream Ich würde sagen, als TMemoryStream.... Nun wenn ich etwas senden möchte, dan hab ich die Möglichkeit mit .Send oder mit .SendBuffer Da .Send einen String erwartet, nehme ich mal an, das ich .SendBuffer nehmen muss... Doch ich habe ja einen Stream und SendBuffer erwartet TBytes. Wie kann ich nun einen Stream per UDP Senden und wieder als Stream empfangen? Danke schonmal |
Re: Audiostreaming über TCP oder UDP
Gibt es nicht auch sendstream? Welche Kompo benutzt du jetzt eigentlich?
|
Re: Audiostreaming über TCP oder UDP
Ich Benutz TidUDPServer...
Die SendStream is nur im TCP vorhanden aber ich will kein TCP is mir zu lahm... :D |
Re: Audiostreaming über TCP oder UDP
Nö gibts im client auch nicht. Dann eben Sendbuffer mit Tmemorystream evtl. so:
Delphi-Quellcode:
oder etwa so (unabhängig von der Art es Streams)
server.sendbuffer('127.0.0.1',2000,stream.memory^,stream.size);
Delphi-Quellcode:
var x:pointer;
begin getmem(x,stream.size); stream.read(x^,stream.size); server.sendbuffer('127.0.0.1',2000,x^,stream.size); freemem(x); |
Re: Audiostreaming über TCP oder UDP
OK DANKE....
Werd ich testen... Wofür ist eigentlich das ^ ?? Das hab ich mich schon so oft gefragt :D |
Re: Audiostreaming über TCP oder UDP
Das sagt, dass ich nicht die Adresse kopieren will, wo der Inhalt des Streams steht, sondern ich will den Stream selber kopieren.
|
Re: Audiostreaming über TCP oder UDP
Und wie kann ich den stream wieder einlesen?
Ich nehme mal an, das ich Stream.write machen muss, aber da benötigt der Stream ja noch die Länge, und ich weiss net wie ich die rausbekommen kann.... |
Re: Audiostreaming über TCP oder UDP
Hm.. über die Komplexität der ganzen Sache bist du dir aber im klaren, oder?
Ich meine, ich bin auch kein über-Pro, aber wenn du hier solche Fragen stellst, glaube ich, dass es in einem Projekt endet, wo ein paar Sachen zusammen geworschtelt worden sind... und dass es dann vielleicht noch nicht einmal Ton überträgt... Also, nicht böse gemeint, aber eine Art Telefonie Software zu schreiben ist denke ich schon etwas komplizierter... Du willst ja vermutlich auch nicht einfach nur einen Stream verschicken, sondern einen Stream, der kein Ende hat, damit eine Seite immer sprechen kann, und die andere immer empfängt.. und selbst das wäre nur die erste Stufe.. Wäre das hier heise, würde ich jetzt schreiben "Macht mich rot, aber ich meine es so!" :-D |
Re: Audiostreaming über TCP oder UDP
:D
Ne bin nicht böse... kann dich gut verstehen :D Ja es soll natürlich schon ein Kontinuierlicher Stream sein :D Mal sehen wie weit ich kommen werde :D |
Re: Audiostreaming über TCP oder UDP
Naja prinzipiell brauchst du erstmal ein eReigns und hängst den Part an den Empfängerstring ran.
Ich würde dir noch raten einen kleinen Protokollheader zu entwerfen umd den Paketen Nummern bzw. Zeitstempel zu verpassen. Mehr tipps kann ich dir allerdings nicht geben, da mir die Erfahrung im Umgang mit Sound fehlt. |
Re: Audiostreaming über TCP oder UDP
Zitat:
![]() |
Re: Audiostreaming über TCP oder UDP
Jo... Danke
Ich wollte mal einen Stream mit dem von dir geposteten Code übertragen. Jedoch kommt immer der fehler, das es keine Überladene Funktion von SendBuffer gibt die mit diesen Eigenschaften aufgerufen werden kann Der fehler bezieht sich auf den Pointer X |
Re: Audiostreaming über TCP oder UDP
:gruebel: das funktioniert nicht? Und du hast es so übernommen (x als pointer oer ppointer)?
Naja, mit Header ist es etwas anders
Delphi-Quellcode:
type PPaket=^TPaket;
TPaket=packed record headerinfo1:integer; //oder sonst irednetwas, headerinfo2:byte; //... //können auch mehrere nichtdynamische Variablen sein data:array[0..0] of byte; end; //Senden einer festen Paketgröße (nur Beispiel; kann auch sein, dass du es anders machen musst) var Paket:PPaket; size:integer; begin size:=50; //Größe der Datenpakete evtl. festlegen getmem(Paket,sizeof(TPaket)+size); stream.Read(Paket^.data,size); Paket^.headerinfo1:=size; //z.b., //...oder was eben in den Header so alles gehört idudpserver1.SendBuffer('127.0.0.1',2000,Paket^,sizeof(TPaket)+size); freemem(Paket); end; |
Re: Audiostreaming über TCP oder UDP
Danke werd ich mal testen....
Ich hätte da noch ne frage... Es gibt doch bestimmt eine VOIP Komponente. Ich hab auch eine im Forum gefunden, jedoch nur für bzw. bis Delphi 6 und ich hab ja Delphi 2007 Ich hab früher mal ein Beispiel Programm gefunden, welches ganz "klein" war und man direkt verbinden konnte... Leider weiss ich nicht mehr wo ich das her hab. Finden tu ich es auch nicht. Es war glaube ich TCP... aber ich denke UDP wird wie du gesagt hast zu aufwendig als das es sich lohnen würde... Vieleicht kennst du ja auch so ein Programm natürlich mit sourcen oder ne VOIP kompo? |
Re: Audiostreaming über TCP oder UDP
Nee, kenne ich nicht. Ich habe mich, wie gesagt, noch nie mit Sound o.ä. beschäftigt. Aber es dürfte kein Problem sein, dass so eine Komponente auch unter D2007 funktioniert.
Edit: Aber vielleicht kann ich dir noch etwas helfen, wenn du erzählst wie du die Audiodaten vom Mikro bekommst und wie du sie auf der anderen Seite abspielen musst. |
Re: Audiostreaming über TCP oder UDP
Danke... Bist echt sehr hilfsbereit :D
Hab inzwischen eine gefunden. Welche sogar das UDP Protokoll bzw die Indy benutzt.. Beispiel programm funktioniert einwandfrei und ich konnte auch ein neues Package installieren Doch wenn ich den Code übernehme dan klappt es nict :( es kommt einfach kein Ton an |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz