![]() |
Aufnehmen mit der Bass.dll - brauche Hilfe!
Hallo zusammen,
ich möchte mittels der BASS.dll aufnehmen, und das ganze mittels der bassenc.dll speichern. Das funktioniert auch, aber ich hab eine Frage: Ich möchte so eine art Monitor-Ausgang realisieren, daß also die Daten die mittels des einen Streams aufgenommen werden, gleichzeitig mit einem anderen Stream wiedergegeben werden. Wenn ich meine Aufnahme allerdings starte, kommt da mal gar nix. Kann mir bitte mal jemand auf die Sprünge helfen? Hier der relevante code:
Delphi-Quellcode:
Und hier die RecordingCallBack...
// kanal ist als HRecord definiert.
kanal := BASS_RecordStart ( 44100, 2, BASS_Sample_Float, @recordingCallBack, nil); if kanal = 0 then begin Fehler (_('Could not start recording! (1)')); exit; end; // monitorkanal, also der ausgabekanal, ist als HSTREAM definiert. MonitorKanal := Bass_StreamCreate (44100, 2, Bass_Sample_Float, StreamProc_Push, nil); if MonitorKanal = 0 then begin Fehler (_('Error initializing monitor channel!')); exit end; Bass_ChannelPlay (MonitorKanal, true); [delphi] function RecordingCallback (channel: HRECORD; buffer: pointer; length: DWord; user: pointer): Boolean; stdcall; begin Bass_StreamPutData (Monitorkanal, buffer, length); Result := true; end; {/delphi} Bitte um euere Hilffe! Viele Grüße Marco |
AW: Aufnehmen mit der Bass.dll - brauche Hilfe!
Warum verwendest Du nicht den Record selber
Delphi-Quellcode:
also dein RecordStream selbst für die Wiedergabe :gruebel:
Bass_ChannelPlay (Kanal, false);
Gruss alfold |
AW: Aufnehmen mit der Bass.dll - brauche Hilfe!
Zitat:
Ich möchte aber, sozusagen on-the-fly, wissen, was aufgenommen wird, daher mein Ansatz mit Bass_StreamPutData. Viele Grüße Marco |
AW: Aufnehmen mit der Bass.dll - brauche Hilfe!
Sorry, hast recht
Aber was passiert wen du es anders machst
Delphi-Quellcode:
indem Du die Daten vom recchannel holst?
MonitorKanal := Bass_StreamCreate (44100, 2, Bass_Sample_Float, @YourStreamProc, nil);
function YourStreamProc(handle: HSTREAM; buffer: Pointer; length: DWORD; user: DWORD): DWORD; stdcall; begin Result := BASS_ChannelGetData(kanal, buffer, length); end; Gruss alfold |
AW: Aufnehmen mit der Bass.dll - brauche Hilfe!
Also ich mache das so:
Delphi-Quellcode:
BASS_Encode_Start(chan, Pointer(PWideString(WideFormat(ExtractFilePath(ParamStr(0)) + 'lame.exe %s - "%s"',[brString, RecDir + '\' + FileName]))), BASS_UNICODE, nil, nil);
Und so wird die Aufnahme gestoppt:
Delphi-Quellcode:
BASS_Encode_Stop(chan);
|
AW: Aufnehmen mit der Bass.dll - brauche Hilfe!
mh.. wovon reden wir jetzt.
Das letzte hat doch nix mit dem Anfang von Dir, ne gemeinsamkeit :gruebel: Oder wie soll ich das jetzt verstehen? Gruss alfold |
AW: Aufnehmen mit der Bass.dll - brauche Hilfe!
Zitat:
Ganz herzlichen Dank. Ich hatte mich so am Push-Stream festgebissen, daß ich darauf echt nicht gekommen bin. ... Tja, das Aufzeichnen des aufgenommenen Streams mache ich auch so ähnlich wie im 5. Beitrag beschrieben, aber das war nicht wirklich die Frage, ;-), da hast du recht! Das einzige, was mir noch aufgefallen ist, ist, daß die Ausgabe mit recht vielen Knacksern durchsetzt ist - aber da kann ich denke ich noch mit'n paar Puffern rumspielen. Aber jedenfalls hört man jetzt, das der richtige Ausgang gewählt ist, und darum ging es mir!Nochmal herzlichen Dank und viele Grüße Marco |
AW: Aufnehmen mit der Bass.dll - brauche Hilfe!
... und noch ein Nachtrag.
Es funktioniert auch, wie ich es im ersten Post schon beschrieben hatte. Dumm ist nur, wenn man eine Prozedur übergibt, und das @-Zeichen vergißt. Hätte ich also
Delphi-Quellcode:
geschrieben, hätte ich euch nicht nerven müssen. ;-)
MonitorKanal := Bass_StreamCreate (44100, 2, Bass_Sample_Float, @StreamProc_Push, nil);
Übrigens sind dann auch die lästigen Knackser vom Tisch! Einen schönen Tag und viele Grüße Marco |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 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