AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Aufnehmen mit der Bass.dll - brauche Hilfe!

Aufnehmen mit der Bass.dll - brauche Hilfe!

Offene Frage von "Marco Steinebach"
Ein Thema von Marco Steinebach · begonnen am 6. Jan 2011 · letzter Beitrag vom 8. Jan 2011
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
490 Beiträge
 
Delphi 5 Enterprise
 
#1

Aufnehmen mit der Bass.dll - brauche Hilfe!

  Alt 6. Jan 2011, 17:50
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:
  // 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);
Und hier die RecordingCallBack...
[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
Marco Steinebach
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Aufnehmen mit der Bass.dll - brauche Hilfe!

  Alt 7. Jan 2011, 09:13
Warum verwendest Du nicht den Record selber
Bass_ChannelPlay (Kanal, false); also dein RecordStream selbst für die Wiedergabe

Gruss alfold

Geändert von alfold ( 7. Jan 2011 um 09:31 Uhr)
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
490 Beiträge
 
Delphi 5 Enterprise
 
#3

AW: Aufnehmen mit der Bass.dll - brauche Hilfe!

  Alt 7. Jan 2011, 10:18
Warum verwendest Du nicht den Record selber
Bass_ChannelPlay (Kanal, false); also dein RecordStream selbst für die Wiedergabe

Gruss alfold
Weil der Aufruf von Bass_ChannelPlay für einen Recordkanal nur zur folge hat, daß die aufnahme startet, genau wie Bass_ChannelPause die aufnahme stoppt. Dadurch das es sich um einen HRECORD-Stream handelt "weiß" die Bass.dll, ob sie das ding abspielen, also wiedergeben, oder aufnehmen soll.
Ich möchte aber, sozusagen on-the-fly, wissen, was aufgenommen wird, daher mein Ansatz mit Bass_StreamPutData.
Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Aufnehmen mit der Bass.dll - brauche Hilfe!

  Alt 7. Jan 2011, 11:48
Sorry, hast recht
Aber was passiert wen du es anders machst

Delphi-Quellcode:
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;
indem Du die Daten vom recchannel holst?

Gruss alfold
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Aufnehmen mit der Bass.dll - brauche Hilfe!

  Alt 7. Jan 2011, 13:30
Also ich mache das so:

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:

BASS_Encode_Stop(chan);

Geändert von OrNEC ( 7. Jan 2011 um 13:38 Uhr)
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Aufnehmen mit der Bass.dll - brauche Hilfe!

  Alt 7. Jan 2011, 15:16
mh.. wovon reden wir jetzt.
Das letzte hat doch nix mit dem Anfang von Dir, ne gemeinsamkeit
Oder wie soll ich das jetzt verstehen?

Gruss alfold
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
490 Beiträge
 
Delphi 5 Enterprise
 
#7

AW: Aufnehmen mit der Bass.dll - brauche Hilfe!

  Alt 7. Jan 2011, 15:59
Aber was passiert wen du es anders machst
Das kann ich dir sagen: Es funktioniert!
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
Marco Steinebach
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
490 Beiträge
 
Delphi 5 Enterprise
 
#8

AW: Aufnehmen mit der Bass.dll - brauche Hilfe!

  Alt 8. Jan 2011, 15:58
... 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
  MonitorKanal := Bass_StreamCreate (44100, 2, Bass_Sample_Float, @StreamProc_Push, nil); geschrieben, hätte ich euch nicht nerven müssen.
Übrigens sind dann auch die lästigen Knackser vom Tisch!
Einen schönen Tag und viele Grüße
Marco
Marco Steinebach
  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 17:21 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