AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Bass.dll Internet Radio - wie die letzten 5 Minuten bekommen, ohne Aufnahme stoppen ?
Thema durchsuchen
Ansicht
Themen-Optionen

Bass.dll Internet Radio - wie die letzten 5 Minuten bekommen, ohne Aufnahme stoppen ?

Ein Thema von Julian M. · begonnen am 12. Jan 2016 · letzter Beitrag vom 15. Jan 2016
 
Julian M.

Registriert seit: 28. Dez 2010
41 Beiträge
 
#1

Bass.dll Internet Radio - wie die letzten 5 Minuten bekommen, ohne Aufnahme stoppen ?

  Alt 12. Jan 2016, 14:10
Hallo ihr lieben,

Folgende Annahme:Ich zeichne mit der Bass.dll und unten angefügtem Code einen Internetradio-MP3 Stream dauerhaft auf.
Den code habe ich von hier: http://www.delphipraxis.net/57338-ba...aufnehmen.html
Nun möchte ich mir bestimmte Lieder inkl. Anfang raus schneiden, d.h. ich will zu einem bestimmten Zeitpunkt die vergangenen 5 Minuten bis 5 Minuten in die Zukunft als MP3 abspeichern. Die Aufzeichnung des Streams soll aber nicht gestoppt werden. Wie stelle ich das an ? Die MP3-Datei in welche die laufende Aufnahme geschrieben wird, ist gesperrt. Ich möchte auch nicht stückeln und z.B. die Aufnahme alle 30 Minuten neu starten nur damit ich an die Daten ran komme. Meine Idee wäre, den Buffer so groß zu machen, dass er 5 Minuten beinhaltet. Dann könnte ich zum Zeitpunkt x sagen: speichere mir den Buffer in Datei x. Geht das ? Wie ? Freue mich über Hilfe! Gruß Julian
P.S: Ich benutze FreePascal/Lazarus v1.4.4

Delphi-Quellcode:

function OpenURL(url: PChar): Integer;
begin
  FileName:= 'd:\record.mp3';
  Result := 0;
  BASS_StreamFree(Form1.chan); // close old stream
  Form1.chan := BASS_StreamCreateURL(url, 0, BASS_STREAM_META or BASS_STREAM_STATUS, @StatusProc, 0);
  if (Form1.chan = 0) then
    Error('Can''t play the stream')
  else
    BASS_ChannelPlay(Form1.chan,FALSE);
  Form1.cthread := 0;
end;


procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall;
begin
  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.Button1Click(Sender: TObject);
var
  ThreadId: Cardinal;
begin
    cthread := BeginThread(nil, 0, @OpenURL, PChar('http://webstream.mp3'), 0, ThreadId);
end;

Geändert von Julian M. (12. Jan 2016 um 14:54 Uhr)
  Mit Zitat antworten Zitat
 


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 13:28 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