![]() |
cd's rippen - brauche dringend hilfe!
Hallo zusammen,
ich möchte die Titel einer CD in MP3's konvertieren. Probleme: 1. die New Audio components sind absolut klasse, tun aber bei mir nicht, weil ich noch'n gutes, altes Delphi 5 hab. okay, nächstes: bassenc.dll und lame.exe. Funktioniert wunderbar, solange man nicht versucht, die bassenc.dll dynamisch zu laden. Tut man dies, bgibt es ständig einen Fehler, daß der Handle nicht valid sei. Hääää? Hat dazu vielleicht jemand eine Idee? Und wenn das alle nix hilft: Kann ich irgendwie dem lame.exe, oder sonst wem ;-), die MP3 Daten ohne diese BASSEnc.DLL übergeben? Dazu hab ich absolut nix hier in der DP und auch sonst nix schlaues gefunden! Ich bitte um eure Hilfe! Einen schönen Abend Marco |
Re: cd's rippen - brauche dringend hilfe!
1. Quelltext. "Häääää?" ist keine Fehlermeldung, und dass du kein gültiges Handle bekommst, hat bestimmt seinen Grund. ;)
2. Hat das einen besonderen Grund, dass du noch mit D5 arbeiten musst? Ansonsten => Turbo Delphi Zu deinem Problem: Natürlich kannst du LAME eine WAVE Datei mit Parametern übergeben, 10 Sekunden Google: ![]() LAME zum Rippen der CD zu nutzen, dürfte schwer sein. |
Re: cd's rippen - brauche dringend hilfe!
Zitat:
Delphi-Quellcode:
und genau hier hängt's, DH sollte nämlich der Handle für den Decode-Kanal sein, und der ist 0. Aaaaaaber nur, wenn man die BASSENC.DLL dynamisch lädt.
var
sh: HSTREAM; // das eigentliche Handle für den Kanal dh: HENCODE; // das Handle für den Encoder, wenn er's denn geschaft hat. BASS_Init(0, 44100, 0, Application.handle, nil); sh := BASS_CD_StreamCreateFile(PChar('f:\track01.cda'), BASS_STREAM_DECODE); if sh <> 0 then begin dh := BASS_Encode_Start (sh, pChar(cmdline), 0, nil, nil); Es gibt auch keine Fehlermeldungen beim laden, o.ä., mit allen anderen BASSXXX.DLL's funktioniert das dynamische laden auch wunderbar. Bemüht man nach dme aufruf von
Delphi-Quellcode:
Bass_errorGetCode, liefert einem das die 5 zurück, was für "invalid Handle" steht.
dh := BASS_Encode_Start (sh, pChar(cmdline), 0, nil, nil);
Zitat:
Zitat:
Viele Grüße Marco |
Re: cd's rippen - brauche dringend hilfe!
Zitat:
Zitat:
Zitat:
|
Re: cd's rippen - brauche dringend hilfe!
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo nochmal,
ich hänge hier mal ein Testprogramm dran. Vielleicht finden wir ja eine Lösung, daß kann ischer noch jemand gebrauchen. Außerdem sind da, für alle die wollen, gleich die dynamic_bass_cd und die dynamic_bass_enc mit dabei - auch wenn letztere ja nicht funktioniert. *grrr Für die statische variante einfach in der uses das "dynamic" streichen und im OnShow die LoadBassxxx aufrufe auskommentieren, dann sollte das beispiel laufen. Bin ganz gespannt auf eure Antworten! Marco |
Re: cd's rippen - brauche dringend hilfe!
Falls du vorhast dein Programm weiterzugeben, wie sieht das überhaupt mit der lame-Lizens aus?
Ich mein das Audiograbber z.B lame auch nicht mitliefert. [Edit]Ok, hab mal nachgeschaut, scheint die LGPL zu sein. |
Re: cd's rippen - brauche dringend hilfe!
Zitat:
Delphi-Quellcode:
var BASS_Encode_GetVersion: function: DWORD; stdcall;
var BASS_Encode_Start: function (handle:DWORD; cmdline:PAnsiChar; flags:DWORD; proc:ENCODEPROC; user:Pointer): HENCODE; stdcall; var BASS_Encode_AddChunk: function (handle:HENCODE; id:PAnsiChar; buffer:Pointer; length:DWORD): BOOL; stdcall; var BASS_Encode_IsActive: function (handle:DWORD): DWORD; stdcall; var BASS_Encode_Stop: function (handle:DWORD): BOOL; stdcall; var BASS_Encode_SetPaused: function (handle:DWORD; paused:BOOL): BOOL; stdcall; var BASS_Encode_Write: function (handle:DWORD; buffer:Pointer; length:DWORD): BOOL; stdcall; var BASS_Encode_SetNotify: function (handle:DWORD; proc:ENCODENOTIFYPROC; user:Pointer): BOOL; stdcall; var BASS_Encode_GetCount: function (handle:HENCODE; count:DWORD): QWORD; stdcall; var BASS_Encode_SetChannel: function (handle:DWORD; channel:DWORD): BOOL; stdcall; var BASS_Encode_GetChannel: function (handle:HENCODE): DWORD; stdcall; var BASS_Encode_GetACMFormat: function (handle:DWORD; form:Pointer; formlen:DWORD; title:PAnsiChar; flags:DWORD): DWORD; stdcall; var BASS_Encode_StartACM: function (handle:DWORD; form:Pointer; flags:DWORD; proc:ENCODEPROC; user:Pointer): HENCODE; stdcall; var BASS_Encode_StartACMFile: function (handle:DWORD; form:Pointer; flags:DWORD; filename:PAnsiChar): HENCODE; stdcall; var BASS_Encode_CastInit: function (handle:HENCODE; server,pass,content,name,url,genre,desc,headers:PAnsiChar; bitrate:DWORD; pub:BOOL): BOOL; stdcall; var BASS_Encode_CastSetTitle: function (handle:HENCODE; title,url:PAnsiChar): BOOL; stdcall; var BASS_Encode_CastGetStats: function (handle:HENCODE; stype:DWORD; pass:PAnsiChar): PAnsiChar; stdcall; |
Re: cd's rippen - brauche dringend hilfe!
Hallo,
Ganz, ganz herzlichen Dank, Garfield, für die Lösung. Scheiß kopierarbeit. ;-) Wie kann man denn so plemm-plemm sein und die stdcalls vergessen. *grummel* nach dem Fehler würde ich noch in zwei Wochen suchen! Vielen Dank nochmal und viele Grüße Marco p.s.: ich bring die 3 Units jetzt auf den neuesten Stand und poste sie dann hier nochmal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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