AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia ngBASS.dll aufnahme und Daten per TCP verschicken

ngBASS.dll aufnahme und Daten per TCP verschicken

Ein Thema von magstripe · begonnen am 15. Sep 2020 · letzter Beitrag vom 15. Sep 2020
Antwort Antwort
magstripe

Registriert seit: 8. Sep 2020
4 Beiträge
 
#1

ngBASS.dll aufnahme und Daten per TCP verschicken

  Alt 15. Sep 2020, 15:01
Hallo,

in einem Programm muss ich mich mit einem Server verbinden. Neben einigen anderen Dingen kann ich darüber Audiodaten von verschiedenen Geräten empfangen aber auch an andere Stationen versenden.
Das Empfangen funktioniert mittlerweile ziemlich gut. Auch das Senden funktioniert eigentlich, aber leider nur schlecht. Zum aufnehmen und abspielen der Audiodaten benutze ich die bass.dll. Für die haben wir eine Lizenz. Wenn aber jemand eine bessere Idee hat, sie ist keine Pflicht. Ich gehe also so vor wie in dem Beispiel"RecordTest" nur das ich mit 8khz Mono aufnehme.

So sieht die Callback Funktion im Beispiel aus:
Delphi-Quellcode:
function RecordingCallback(Handle: HRECORD; buffer: Pointer; length: DWORD; user: Pointer): boolean; stdcall;
begin
   RecordingStream.Write(buffer^, length);
   Result := True;
end;
Nun zu meinem Problem:
Es ist vorgegeben, dass solange ein Relais angezogen ist, immer Audio-Pakete mit 3200 Bytes mit ein paar anderen Daten zu einem Paket gepackt werden und über TCP an den Server geschickt werden. Diese Paketlänge ist Fix. Wie kann ich es jetzt erreichen, dass die Callbackfunktion immer bei erreichen von 3200 Bytes eine andere Funktion aufruft, die dann das verschicken übernimmt.

Ich habe sie so umgeschrieben, aber leider stockt das, leiert oder gibt eine Art Echos von sich.
Delphi-Quellcode:
begin
    if length >= 3200 then
      begin
        RecordingStream.Write(buffer^, 3200);
        CreateData;
        Result := True;
      end;
end;
In CreateData wird das TCP gepackt und verschickt.

Oder packe ich das vielleicht falsch an?

VG Frank
  Mit Zitat antworten Zitat
venice2

Registriert seit: 5. Dez 2019
264 Beiträge
 
Delphi 2010 Architect
 
#2

AW: ngBASS.dll aufnahme und Daten per TCP verschicken

  Alt 15. Sep 2020, 15:33
Es wäre vielleicht nicht schlecht wenn du dich zusätzlich nochmal auf Un4Seen informierst.
RecordingCallback sollte eigentlich nur Result = True zurückgeben.

RecordingStream.Write(buffer^, length);
innerhalb der Callback ist keine gute idee.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf