Hi,
um ein Webradio wiederzugeben benutze ich den BassDllPlayer. Ich will den Stream jetzt aber auf Wunsch aufnehmen können. In dem BassDllplayer ist eine Aufnahmefunktion integriert jedoch nimmt die auch Nebengeräusche von Windows Media Player und Icq und so auf. Ich kann ja mal ein paar Ausschnitte der
Unit hier hin schreiben. Jemand sagte mir es geht per
WavStream.SaveToFile('C:\filename.wav');
Dann kommt ein Fehler, dass er den Begriff nicht kennt. Also das Savetofile. Hier die Wiedergabe- Funktion eines Streams:
Delphi-Quellcode:
function TBassdllPlayer.PlayNetStream(
url:
string): Boolean;
begin
StoppAndFreeChannels;
Channel := BASS_StreamCreateURL(PChar(
url), 0, BASS_STREAM_META,
nil, 0);
if Channel = 0
then
ShowMyMessage('
Der ausgewählte Stream kann nicht abgespielt werden!');
Result := BASS_ChannelPlay(Channel, False);
Modus := moStream:
end;
Hier die Aufnahme- Funktion, die Nebengeräusche mit aufnimmt:
Delphi-Quellcode:
procedure TBassdllPlayer.StartRecording(Input: integer; FileName: string);
var
i: Integer;
begin
//F ile Stream
WaveStream := TFileStream.Create(FileName, fmCreate);
if WaveStream.Size > 0 then
begin // free old recording
BASS_StreamFree(Channel);
end;
// generate header for WAV file
WaveHdr.riff := 'RIFF';
WaveHdr.len := 36;
WaveHdr.cWavFmt := 'WAVEfmt ';
WaveHdr.dwHdrLen := 16;
WaveHdr.wFormat := 1;
WaveHdr.wNumChannels := 2;
WaveHdr.dwSampleRate := 44100;
WaveHdr.wBlockAlign := 4;
WaveHdr.dwBytesPerSec := 176400;
WaveHdr.wBitsPerSample := 16;
WaveHdr.cData := 'data';
WaveHdr.dwDataLen := 0;
WaveStream.Write(WaveHdr, SizeOf(WAVHDR));
i := 0;
while BASS_RecordSetInput(i, BASS_INPUT_OFF) do
begin
i := i + 1;
end;
BASS_RecordSetInput(input, BASS_INPUT_ON);
// start recording @ 44100hz 16-bit stereo
recordchannel := BASS_RecordStart(44100, 2, 0, @RecordingCallback, 0);
if recordchannel = 0 then
begin
ShowMyMessage('Die Aufnahme kann nicht gestartet werden.', TRUE);
WaveStream.Free;
end;
isRecording := True;
end;
Kann mir jemand bei meinem Problem helfen?
MFG Larsi