AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Voice-/Sprach-Chat

Offene Frage von "onepiecefreak2"
Ein Thema von onepiecefreak2 · begonnen am 13. Jun 2014 · letzter Beitrag vom 20. Jun 2014
Antwort Antwort
onepiecefreak2

Registriert seit: 13. Jun 2014
50 Beiträge
 
#1

AW: Voice-/Sprach-Chat

  Alt 15. Jun 2014, 15:02
Ok, ich muss hier etwas klarstellen... das ich Videochat geschrieben habe, ist mir gar nicht aufgefallen.

Ic wollte Voicechat schreiben... SRY an der Stelle. Mein Problem aber, dürfte sein, dass ich versuche alles auf einmal lernen und einbringen zu wollen. Deswegen klingt das alles auch so wirsch was ich vorhab .

@Perlsau
Die Links habe ich bereits alle durchgelesen. Manche davon kannte ich schon. Das Aufnehmen einer Sounddatei ist mir, wie du mir als Ziel gesetzt hast, schon möglich. Natürlich muss ich aber Streamen und nicht aufnehmen und Datei speichern.

Was ich aber am geilsten finde an diesem Thread, dass hier so viele "bekannte" Gesichter reinschreiben. Mavarek oder Aphton habe ich im Zusammenhang mit solchen Audio-Themen hier im Forum immer wieder rumgeistern sehen.

Ich werde mir mal den Code von Aphton ansehen.

Bis zum nächsten Kommentar.

Geändert von onepiecefreak2 (15. Jun 2014 um 16:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Voice-/Sprach-Chat

  Alt 16. Jun 2014, 11:13
Was ich aber am geilsten finde an diesem Thread, dass hier so viele "bekannte" Gesichter reinschreiben.
Ups... Sieh mal einer an zu welchem Club ich hier gehöre...

Zitat von Groucho-Marx:
"Ich mag keinem Club angehören, der mich als Mitglied aufnimmt."
Na egal...

BTB:

Thema 1 Audioaufnahme:
Die "Komponente" muss einen möglichst kleinen zum UDP Package großen Audiostream aufnehmen (Größe nach dem Codec). Bedeutet
Die nativen Audiodaten in Puffer 1 schreiben. Wenn der Puffer voll ist diesen durch einen Codec jagen und zwar einen der
KEINE Datei braucht. Hierfür sind VOIP/Telefon Codecs besser geeignet.
Die Routinen muss also einen Backcall/Interrupt auslösen, um das Samplen auf Puffer 2 um zu stellen und den Codec starten.

Thema 2 Übertragung:
Wenn der Codec fertig ist, müssen die Daten per TCP/IP oder UDP übertragen werden. Also müssen die Daten so klein sein, dass diese
genau so schnell oder schneller übertragen werden können, als dass aufnehmen des Puffers dauert. (inkl.Codec)
Also brauchst Du eine adaptive Qualitätseinstellung um die Größe an zu passen.

Weil? Was tun, wenn der Puffer2 schon voll ist, aber der Puffer 1 noch nicht codiert ist?
- Codec zu langsam

Was ist wenn der Codec schon wieder gestartet wird, obwohl der Übertragungspuffen noch nicht leer ist?
- 2. Puffer anlegen... 3. Puffer anlegen 4. usw. und hoffen, das der Sprechende mal ne pause macht. bzw.
Ab dem 3. Puffer die Aufnahme Qualität runter bzw. die Codec Kompression hoch setzen.

Ach ja unnötig zu erwähnen, dass Du natürlich parallel dazu die ganze Zeit auch noch Audio Streams empfangen musst und diese an die Soundkarte ausgeben musst.

Optimierung:
Sprachpausen, Hintergrund Geräusche und Echos erkennen und eliminieren.

Sprachpausen als Token (Warte n Millisekunden) (5 Byte) übertragen und nicht das dem Codec überlassen.

So kann es etwas werden...

Mavarik
  Mit Zitat antworten Zitat
onepiecefreak2

Registriert seit: 13. Jun 2014
50 Beiträge
 
#3

AW: Voice-/Sprach-Chat

  Alt 17. Jun 2014, 17:51
So,

ich habe mich mal durch Aphtons Programmcode gefressen. Nun ich bin weit gekommen, kann allerdings das Programm nicht neu compilieren, weil ich zB mal die Samplerate erhöht habe. Er fordert eine aphtonSocket.dcu. Da ich die nicht habe, habe ich den Verweis aus dem uses-Bereich gelöscht und kennt danach die REGION-Einklammerungen nicht mehr.

Also wenn Aphton mir die dcu-Datei gibt oder mir sagt, wie ich es auch ohne diese neu compilieren kann, wäre ich sehr dankbar.

Und nochmal, nicht dass es falsch rüberkommt, ich wollte nur die Samplerate mal höher stellen. Nichts anderes.
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Voice-/Sprach-Chat

  Alt 17. Jun 2014, 19:40
Joa, hab ich vergessen.. Ist nur ein kleiner WinSock Wrapper..
Angehängte Dateien
Dateityp: pas aphtonSocket.pas (7,8 KB, 44x aufgerufen)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
onepiecefreak2

Registriert seit: 13. Jun 2014
50 Beiträge
 
#5

AW: Voice-/Sprach-Chat

  Alt 17. Jun 2014, 22:14
Danke erstmal dafür Aphton.

Nun mein 2. Problem mit deiner Annwendung. Ich versuche im Moment alles aufzuspalten, um deinen Code über 2 separate Formen, eine für den Server und eine für den Client, zu packen. Bis auf das Hauptprogramm, an dem ich gerade sitze. In diesem befindet sich diese Zeile:
if Client.ReceiveLength > 0 then und diese:
if Accept.ReceiveLength > 0 then Deren Bedeutung ist mir durchaus bewusst, aber das Programm meint zu diesen Zeilen folgendes:
[Fehler] Unit1.pas(242): Undefinierter Bezeichner: 'ReceiveLength'

Ich habe deinen Code bis jetzt 1:1 übernommen und ihn auch schon mehrmals durchgeschaut. Es gibt keine Deklaration für ReceiveLength. Zumal ja nichts ungewöhnliches, da ReceiveLength zu einem Befehlaufruf gehört. Aber warum kennt Delphi diesen Befehl nicht? Oder funktioniert ReceiveLength nur in einer Konsolenanwendung?

Danke im Vorraus.

P.S: Liegt es an der Samplerate von 'nur' 11025, dass der Ton ruckelt? Ich habe es mal mit mir selbst getestet (da ich mich nämlich auch selbst hören kann ^^) und habe festgestellt, dass es hier und da einfach mal zu Aussetzern kommt. Das sind sicher diese verlorenen Daten, die ja vermieden werden sollen.

Geändert von onepiecefreak2 (17. Jun 2014 um 22:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Voice-/Sprach-Chat

  Alt 17. Jun 2014, 22:42
Wirf einen Blick in die aphtonSocket.pas, dann springt es dich an ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
onepiecefreak2

Registriert seit: 13. Jun 2014
50 Beiträge
 
#7

AW: Voice-/Sprach-Chat

  Alt 17. Jun 2014, 23:24
Also ist der Fehler auch auf die .pas zurückzuführen? Naja, konnt' ich mir ja gleich denken.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Voice-/Sprach-Chat

  Alt 18. Jun 2014, 05:29
P.S: Liegt es an der Samplerate von 'nur' 11025, dass der Ton ruckelt? Ich habe es mal mit mir selbst getestet (da ich mich nämlich auch selbst hören kann ^^) und habe festgestellt, dass es hier und da einfach mal zu Aussetzern kommt. Das sind sicher diese verlorenen Daten, die ja vermieden werden sollen.
Der Ton sollte nicht ruckeln, vorallem deswegen, weil zwei Puffer per WaveIn abwechselnd an das System zur Aufnahme überreicht werden - das ganze in nem Thread völlig ungestört.
Vlt hast du da ja etwas geändert, könnte daran liegen.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Voice-/Sprach-Chat

  Alt 18. Jun 2014, 06:02
[off topic]

Wie war da jetzt nochmal?

Zitat von Aphton:
Ich versteh nicht, warum das jeder so verkompliziert. Ist im Grunde doch ganz einfach - Windows bietet einem bereits alles an, was man braucht: Sockets + WaveIn/WaveOut Funktionen
Ich meine, schön und gut, du lieferst ihm eine fertige Lösung, für deren Verwendung und Einsatz der TE nix weiter dazulernen und die er auch nicht verstehen muß – wenn sie denn funktionieren würde. Ob das nachhaltig ist, darf bezweifelt werden ...

Da fragt man sich doch öfter mal, worum's eigentlich geht: Daß der Fragesteller eine Lösung erarbeiten kann oder daß sich Hilfsbereite gegenseitig im Anbieten der besseren Lösung ausstechen. Was glaubst du wohl, weshalb der TE nun auf deine Lösung eingeht? Ganz einfach: Weil der glaubt, das ohne weiteren Hirnschmalz einsetzen und als eigene Lösung ausgeben zu können – er nimmt einfach den Weg des scheinbar geringsten Widerstandes. Also ich bin da jetzt endgültig raus ...

[/off topic]
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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