Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Aufnahme Code für netradio - alles richtig? (https://www.delphipraxis.net/133817-aufnahme-code-fuer-netradio-alles-richtig.html)

AlexII 9. Mai 2009 18:36


Aufnahme Code für netradio - alles richtig?
 
Hallo,

hab diesen Code für die .mp3 Aufnahme des netradios zusammen gestellt. Kann vllt jemand diesen überprüfen, ob da alles ok ist, denn die Qualität der .mp3 Dateien ist irgendwie schlecht, obwohl die Bitrate nicht verändert wird und die Aufnahme ist zeitversetzt.

Delphi-Quellcode:
private
    procedure StartRec;
    procedure StopRec;

var
    WaveStream    : TMemoryStream;



procedure TForm1.StartRec;
begin
    WaveStream.Clear;
end;

procedure TForm1.StopRec;
var
  FileName : String;
begin
  FileName:='test.mp3';
  WaveStream.SaveToFile(FileName);
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)))
  else
    WaveStream.Write(buffer^, len); <-------
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
...
  WaveStream:= TMemoryStream.Create;
...
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
StartRec;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
StopRec;
end;

fkerber 9. Mai 2009 18:36

Re: Aufnahme Code für netradio - alles richtig?
 
Hi!

Funktioniert der Code denn?
Was ist mit der markierten Stelle?


Ciao, Frederic

AlexII 9. Mai 2009 18:41

Re: Aufnahme Code für netradio - alles richtig?
 
Ja der funktioniert wunder bar bis jetzt. Hab die Stelle markiert, damit man es besser sehen kann. :mrgreen:

AlexII 9. Mai 2009 18:43

Re: Aufnahme Code für netradio - alles richtig?
 
Die Qualität der .mp3 Dateien ist irgendwie schlecht, obwohl die Bitrate nicht verändert wird. :gruebel:
Und die Aufnahme ist zeitversetzt. :gruebel:

Gausi 9. Mai 2009 19:07

Re: Aufnahme Code für netradio - alles richtig?
 
So funktioniert halt das Aufnehmen mit der bass.dll. Beim Erzeugen des Bass-Streams (nicht in dem Codeausschnitt) übergibst du eine StatusProc-Prozedur, an die die empfangenen Daten des Streams durchgereicht werden. Wenn man die in einen Stream schreibt, hat man hinterher ne entsprechende Datei.

Dass die Qualität schlecht ist, könnte an der niedrigen Bitrate des Streams liegen. Es gibt auch welche mit einer Bitrate von 192 und mehr kbit/s.

Zeitversetztes Aufnehmen (d.h. ein paar Sekunden) ist afaik auch normal, da sich wohl nicht genau steuern lässt, wann genau die bass.dll einen neuen Datenblock an die StatusProc sendet.

AlexII 9. Mai 2009 19:12

Re: Aufnahme Code für netradio - alles richtig?
 
Zitat:

Zitat von Gausi
So funktioniert halt das Aufnehmen mit der bass.dll. Beim Erzeugen des Bass-Streams (nicht in dem Codeausschnitt) übergibst du eine StatusProc-Prozedur, an die die empfangenen Daten des Streams durchgereicht werden. Wenn man die in einen Stream schreibt, hat man hinterher ne entsprechende Datei.

Verzeih hab das nicht verstanden, ist der Code ok so, oder wie? :gruebel:

Gausi 9. Mai 2009 19:19

Re: Aufnahme Code für netradio - alles richtig?
 
Wenn es funktioniert, und sich die Datei so anhört, wie sich die Musik auch live anhört: Ja. :zwinker:

Du könntest höchstens an Stelle des MemoryStreams direkt einen Filestream nehmen, dann ist das Lied zumindest teilweise auf Platte, wenn dein Programm zwischendurch mal abstürzt.

AlexII 9. Mai 2009 19:21

Re: Aufnahme Code für netradio - alles richtig?
 
Zitat:

Zitat von Gausi
Du könntest höchstens an Stelle des MemoryStreams direkt einen Filestream nehmen, dann ist das Lied zumindest teilweise auf Platte, wenn dein Programm zwischendurch mal abstürzt.

Aha.... und wie geht das? :gruebel:

AlexII 9. Mai 2009 19:42

Re: Aufnahme Code für netradio - alles richtig?
 
Das mit der Qualität hat sich geklärt, es lag an meinem Player und die Zeitverschiebung ist eigentlich nicht so drastisch, +/- ca. 5 Sek. kann man verkraften. :)

AlexII 16. Mai 2009 11:42

Re: Aufnahme Code für netradio - alles richtig?
 
Kann mir jemand nen Denkanstoß geben, wie ich die Aufnahme mit FileStream realisieren soll? :gruebel:

Hab schon vieles versucht, aber irgendwie läuft bei mir nix. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 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