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 14. Jun 2014, 15:01
Ja, mag schon stimmen. Dennoch ist in deinem Post ein guter Ablaufplan vorhanden. Wenn ich diesen Ablauf Stück für Stück abarbeite, wäre es möglich mein Wissen entsprechend auszubauen.

Natürlich ist es eine dumme Frage nach Aufnahme- oder Wiedergabekomponenten. Ich glaube dazu könnte ich noch was finden. Das Senden und Empfangen kann ich ja schon mit Strings. Allerdings ist es ja ein Unterschied ob ich nun mit SendText und ReceiveText einen String versende oder mit anderen Befehlen eine Audiodatei. Demnach ist das Senden und Empfangen wohl noch eine Frage für diesen Thread hier.
Andererseits noch eine Frage: An welchem Punkt muss die Komprimierung/Dekomprimierung stattfinden?

Ich danke für eure Mühen bisher!
  Mit Zitat antworten Zitat
onepiecefreak2

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

AW: Voice-/Sprach-Chat

  Alt 14. Jun 2014, 17:04
Um den aktuellen Status zu Seite zu bringen: Ich habe nun die Aufnahme von Ton in Delphi gebracht.

Das ist der Code dazu. (Sollte der dem einen oder anderen bekannt vorkommen, ich habe ihn aus diesem Thread entnommen: http://www.delphipraxis.net/7803-sound-aufnehmen.html)
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, mmSystem; //Die Unit mmSystem muss hier stehen, sonst sind die Befehle nicht zu nutzen.

//...

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin

//Aufnahme des Tons.
     mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mySound',nil,0,Handle);
     mciSendString('SET mySound ' +
                   'TIME FORMAT MS ' +
                   'BITSPERSAMPLE 16 ' +
                   'CHANNELS 2 ' +
                   'SAMPLESPERSEC 44100 ' +
                   'BYTESPERSEC 176400 ' +
                   'ALIGNMENT 4',
                   nil,0,handle);
     mciSendString('RECORD mySound',nil,0,Handle);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin

//Beenden der Aufnahme und Speichern der Datei.
mciSendString('STOP mySound',nil,0,Handle);
     mciSendString('SAVE mySound "c:\datei.wav"',nil,0,Handle);
     mciSendString('CLOSE mySound',nil,0,Handle);
end;
Nun versuche ich diese Datei zu konvertieren und will am Besten LAME benutzen. Wie kann ich das Einbinden? Sollte das nicht gehen, wie kann ich das sonst aus dem Programm heraus realisieren?

P.S: Ich habe mich derweil ein wenig in das Thema "Threads" reingelesen. Heißt, ich kann diese Konvertierung auch in einem Thread laufen lassen, was mir doch sicher geraten wird, oder?

Geändert von onepiecefreak2 (14. Jun 2014 um 17:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.202 Beiträge
 
Delphi 12 Athens
 
#3

AW: Voice-/Sprach-Chat

  Alt 14. Jun 2014, 18:47
Also so kannst du das wohl gleich wieder vergessen.

Was willst du denn damit machen?
Jeweils 1-x Sekunden aufnehmen, das danach speichern, umwandeln und dann auch noch übertragen?
Erstmal gibt es dann entweder ständig Aussetzer, wenn du die Aufnahme immer wieder stoppst, weil die aufgenommenen Stückchen nicht zu lang sein dürfen,
denn sonst ergibt das schließlich eine ganz schöne Verzögerung, bis das andere Ende endlich mal was hören kann.

Fazit: Du brauchst auf jeden Fall eine Aufnahmemethode, welche per Streaming aufnimmt und wo man die Daten bereits während der Aufnahme einlesen, umwandlung und versenden kann.

Eventuell ist die bass.dll da schon bissl geeigneter.


PS: Man mag es nicht glauben, aber die Suchfunktion ist nicht ganz umsonst.
http://www.delphipraxis.net/106489-a...-oder-udp.html
http://www.vclcomponents.com/s/0__/a...ponent_delphi/
uvm.




Aber ja, so kann man das natürlich dennoch machen, aber dann mußt du das anders regeln.
z.B.:
- man drückt auf einen Knopf, nimmt auf, bis man loslässt,
- dann wird die Aufnahme umgewandelt, übertragen und danach drüben abgespielt.

Das ist dann so ähnlich, wie mit den Walkie-Talkies früher.




Und ja, man kann natürlich die Zeitkrittischen Teile auf mehrere Threads aufteilen.
z.B.:
- in einem Thread aufnehmen
- im nächsten Thread parallel dazu das bereits aufgenommene Umwandeln
- im dritten Thread das übertragen,
- dann 'nen Thread zum Empfangen des Tons der Gegenseite (den Thread braucht man nicht unbedingt selber machen ... je nach Übertragungskomponenten)
- und dann 'nen Thread zum Abspielen des Tons

Je nach Auslastung kann man auch mehrere Dinge zusammen in einem Thread machen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (14. Jun 2014 um 18:55 Uhr)
  Mit Zitat antworten Zitat
onepiecefreak2

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

AW: Voice-/Sprach-Chat

  Alt 14. Jun 2014, 18:56
Deine Idee mit den Threads, wie du sie aufteilst, dachte ich mir auch schon. Das Problem ist nun Folgendes: Ich brauche etwas um das schon vorhandene Tonmaterial umzuwandeln. Wie ich schon in einem früheren Post anmerkte würde ich zum Umwandeln gerne LAME benutzen. Es ist allerdings so, dass ich nicht weiß wie ich das einbinde.

Hast du vllt. eine Idee? Oder gleich einen Code dafür?

Noch interessant wäre: Wenn ich die Datei sofort dann umwandle, wenn sie am Entstehen ist, muss ich da auf mehr Dinge achten, als wenn ich eine schon fertige Datei umwandle?

Geändert von onepiecefreak2 (14. Jun 2014 um 19:07 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Voice-/Sprach-Chat

  Alt 14. Jun 2014, 19:22
Also ich weiß nicht: Erst willst du einen Voice-Chat basteln, jetzt willst du plötzlich vorhandenes Tonmaterial umwandeln. Das sind zwei völlig unterschiedliche Dinge! Dann schreibst du im Eingangsposting, du möchtest etwas entwickeln, bittest aber ständig um fertigen Code, weil dir die für dein Vorhaben notwendigen Grundlagen fehlen. Daher würde ich dir empfehlen, dich erst einmal mit diesen Grundlagen ausführlich zu befassen, damit du überhaupt verstehst, was die Hinweise, die man dir liefert, bedeuten und wie sie umzusetzen sind.
  Mit Zitat antworten Zitat
onepiecefreak2

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

AW: Voice-/Sprach-Chat

  Alt 14. Jun 2014, 19:31
Ich will nichts anderes in jedem Post. Durch die Antworten der anderen ist mir nur klar geworden, dass es nicht einfach nur Sprechen und Übertragen ist, sondern aufnehmen, umwandeln, senden, empfangen, evtl. nochmal umwandeln, abspielen. Seitdem versuche ich Punkt für Punkt das Wissen der anderen zusammenzuttragen.

Jetz sind wir beim ersten Umwandeln, da wir ja schon aufnehmen können.

Zudem habe ich schon Grundlagenwissen im Übertragen von Strings über einen TCP/IP-Server. (Ja, ich weiß Strings sind nicht dasselbe, wie Audio-Dateien)

Und zum Letzten. Ich verlange keinen "fertigen" Code. Ich bitte um Codeausschnitte oder einzelne Befehle mit evtl. Erklärung. Alles damit ich so flexibel wie möglich bei meinem noch beschränkten Wissen sein kann. (Ich hoffe durch diesen Thread mein Wissen zu erweitern)

Und bevor noch weiteres kommt. Wer die Vorposts gelesen hat, bemerkt, dass ich auch sehr wohl in der Lage bin mir eigenes Wissen anzueigenen (Benutzen von Threads) oder durchaus Google oder die Suchfunktion hier zu bemühen.

Also nochmal: Ich will jetzt NICHT nur wissen wie ma umwandelt. Es ist einer der vielen Schritte die getan werden müssen, um voranzukommen.

Geändert von onepiecefreak2 (14. Jun 2014 um 19:34 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Voice-/Sprach-Chat

  Alt 14. Jun 2014, 19:54
Wie Himitsu dir oben bereits mitgeteilt hat, benötigst du für dein Vorhaben eine Möglichkeit
  1. Sound via Streaming von einem Mikrofon aufzunehmen
  2. augenommenen Sound sofort zu verarbeiten
  3. augenommenen Sound zu versenden.

Das bietet z.B. die Bass.dll, in die du dich aber erst einmal einarbeiten mußt. Diese Library bietet auch Möglichkeiten, Streams zu encodieren. Deine Aufnahmetechnik ist nicht dazu geeignet, dein Vorhaben umzusetzen, wie dir Himitsu oben ebenfalls bereits erläutert hat. Aber du kannst ja jetzt schon aufnehmen, wie du schreibst. Und Strings versenden ... alle Achtung!

Für mein PC-Pulsmess-Programm via Mikrofon habe ich mich etliche Tage eingehend mit den entsprechenden Features der Bass-Library und den verfügbaren Add-Ons befaßt. Daher weiß ich sehr , daß dir für dein Vorhaben noch eine Menge Grundlagen fehlen. Du hast, wie du schreibst, massig Zeit, also ran an den Speck.

Und wenn du jetzt nochmal erwähnst, daß du schon weißt, wie man Strings versendet, dann ruf ich den Bademeister
Du solltest auch nicht ständig in der Wir-Form schreiben, denn es ist dein Vorhaben und dein Projekt. Niemand will hier das Projekt mit dir gemeinsam entwickeln, auch wenn du das im Eingangsposting gefordert hattest.

Geändert von Perlsau (15. Jun 2014 um 01:05 Uhr)
  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 06:36 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