![]() |
Webradio aufnehmen
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
Delphi-Quellcode:
Dann kommt ein Fehler, dass er den Begriff nicht kennt. Also das Savetofile. Hier die Wiedergabe- Funktion eines Streams:
WavStream.SaveToFile('C:\filename.wav');
Delphi-Quellcode:
Hier die Aufnahme- Funktion, die Nebengeräusche mit aufnimmt:
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;
Delphi-Quellcode:
Kann mir jemand bei meinem Problem helfen?
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; MFG Larsi |
Re: Webradio aufnehmen
24 Stunden rum. Push.
|
Re: Webradio aufnehmen
Schau dir mal das genauer an...
Delphi-Quellcode:
lg
Input: integer
|
Re: Webradio aufnehmen
Hab ich doch ich versteh's trotzdem nicht. Kannst du's mir erklären?
|
Re: Webradio aufnehmen
|
Re: Webradio aufnehmen
Ich will aber nur das abgespielte und nicht "Hauptlautstärke" aufnehmen. Welchen Index brauch ich da?
|
Re: Webradio aufnehmen
So habe ich das bei meiner Freeware "Christian Computer Radio" gemacht...
Delphi-Quellcode:
var
FileStream : TFileStream; FileNeme : String; // <= C:\test.mp3 function Get_AppPath : string; begin result:= ExtractFilePath( ParamStr( 0 ) ); end; procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall; begin if (buffer <> nil) and (len = 0) then SendMessage(win, WM_INFO_UPDATE, 8, DWORD(PChar(buffer))); if (FileNeme = '') then exit; if (FileStream = nil) then FileStream:= TFileStream.Create(FileNeme, fmCreate); // create the file if (buffer = nil) then FileStream.Free // finished downloading else FileStream.Write(buffer^, len); end; function OpenURL(url: PChar): Integer; var .... begin FileNeme:= Get_AppPath + Form1.Filename_Edit.Text; ... end; procedure TForm1.StopClick(Sender: TObject); begin FreeAndNil(FileStream); end; |
Re: Webradio aufnehmen
Und wie starte ich dann die Aufnahme?
|
Re: Webradio aufnehmen
Delphi-Quellcode:
var
FileStream : TFileStream; FileName : String; // <= C:\test.mp3 procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall; begin if (buffer <> nil) and (len = 0) then SendMessage(win, WM_INFO_UPDATE, 8, DWORD(PChar(buffer))); if (FileName = '') then exit; if (FileStream = nil) then FileStream:= TFileStream.Create(FileName, fmCreate); // create the file if (buffer = nil) then FileStream.Free // finished downloading else FileStream.Write(buffer^, len); end; procedure TForm1.StartClick(Sender: TObject); begin FileName:='test.mp3'; end; procedure TForm1.StopClick(Sender: TObject); begin FreeAndNil(FileStream); end; |
Re: Webradio aufnehmen
Hier wird gleich in .mp3 geschrieben, die Bitrate der Aufnahme und andere Parameter sind die des Senders. Bei der Aufnahme wird also der abgespielter Stream nicht verloren gegangen sondern in die mp3-Datei geschrieben.
|
Re: Webradio aufnehmen
Irgendwo musst du doch diese Funktion aurufen oder?
|
Re: Webradio aufnehmen
Zitat:
|
Re: Webradio aufnehmen
Zitat:
@Larsi: Ich würde es evtl. anders machen. OrNECs Code kommt mir etwas spanisch vor. Du musst halt gucken dass du dir die verfügbaren Devices auflisten lässt und dann darfst du als Input eben nicht 0 nehmen sondern dementsprechend was anderes. Gruß Neutral General |
Re: Webradio aufnehmen
Zitat:
|
Re: Webradio aufnehmen
Was wird denn bei SendMessage als erster Parameter erwartet?
|
Re: Webradio aufnehmen
ein hwnd was auch immer das ist? Wenn ich da handle reinschreib klappts auch nicht.
|
Re: Webradio aufnehmen
Win scheint eine globale Variable vom Typ HWnd (Fensterhandle) zu sein. Welches Fenster das im Beispiel ist, soll Dir OrNEC erklären.
|
Re: Webradio aufnehmen
Wm_Info_Update kennt er auch nicht. :(
Zitat:
|
Re: Webradio aufnehmen
Das scheint dann wieder eine selbst definierte Konstante zu sein.
P.S.: Larsi, mal unter uns, meinst Du wirklich, dass Programmierung im Allgemeinen und Delphi im Speziellen das Richtige für Dich ist? Ich meine, es gibt so viele Sportarten, die auch Spaß machen und wo man nach 3 Jahren auch Erfolgserlebnisse hat. |
Re: Webradio aufnehmen
Habs hingekriegt. Was fürn ein Erfolgserlebnis. :?
|
Re: Webradio aufnehmen
Denke bitte nicht nur an dich und zeige den anderen hier doch deine Lösung. ;)
|
Re: Webradio aufnehmen
Und es besteht überhaupt kein Grund, hier die beleidigte Leberwurst zu spielen. Du bist jetzt knapp 3 Jahre hier im Forum aktiv, trotzdem habe ich den Eindruck, Deine Programme bestehen lediglich aus einem Sammelsurium fremden Codes. Das ist am Anfang (und auch bei speziellen Problemstellungen) ja auch durchaus legitim, sonst hätte z.B. die VCL keine Daseinsberechtigung. Allerdings habe ich nicht den Eindruck, dass Du Dich mit den Codes dann auch auseinander setzt, wenn Du etwas Bestimmtes erreichen möchtest. Von daher war mein Rat durchaus ernst gemeint.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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