 |
| |
|
|
 |
Autor |
Nachricht |
 |
| |
| Marco Steinebach |
#1| Verfasst am: 05.01.2009, 23:13 Titel: cd's rippen - brauche dringend hilfe! |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 230 angemeldet: 04.08.2006 Delphi 5 Standard

|
Sprache: Delphi (Win32) 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 |
|
 |
|
|
|
| |
| Daniel G |
#2| Verfasst am: 05.01.2009, 23:23 Titel: Re: cd's rippen - brauche dringend hilfe! |
 |
 |
 |
|
sehr aktives Mitglied Alter: 22 Beiträge: 665 angemeldet: 27.11.2008 Wohnort: Wilhelmshaven Turbo Delphi für Win32

|
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:
http://lame.cvs.sourceforge.net/*checkout*/lame/lame/USAGE
LAME zum Rippen der CD zu nutzen, dürfte schwer sein. |
|
 |
|
|
|
| |
| Marco Steinebach |
#3| Verfasst am: 05.01.2009, 23:34 Titel: Re: cd's rippen - brauche dringend hilfe! |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 230 angemeldet: 04.08.2006 Delphi 5 Standard

|
| Der Abtrünnige hat folgendes geschrieben: | | 1. Quelltext. "Häääää?" ist keine Fehlermeldung, und dass du kein gültiges Handle bekommst, hat bestimmt seinen Grund. |
also:
| Delphi-Quellcode: | markieren | 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); |
|
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.
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
Bass_errorGetCode, liefert einem das die 5 zurück, was für "invalid Handle" steht.
| Der Abtrünnige hat folgendes geschrieben: | | 2. Hat das einen besonderen Grund, dass du noch mit D5 arbeiten musst? Ansonsten => Turbo Delphi |
Joa, klar, aber das funktioniert nicht mit meinem Screenreader zusammen.
, , ähm, das war mir klar, hat aber den KLEINEN Nachteil, daß man die Datei erst als WAVE rippen muß udn dann der LAME zum encodieren übergeben - wie das geht, ist mir klar, es ging um den direkten weg.
Viele Grüße
Marco |
|
 |
|
|
|
| |
| Daniel G |
#4| Verfasst am: 05.01.2009, 23:43 Titel: Re: cd's rippen - brauche dringend hilfe! |
 |
 |
 |
|
sehr aktives Mitglied Alter: 22 Beiträge: 665 angemeldet: 27.11.2008 Wohnort: Wilhelmshaven Turbo Delphi für Win32

|
| Marco Steinebach hat folgendes geschrieben: | | wenn man die BASSENC.DLL dynamisch lädt. |
Merkwürdig, in der Tat...
| Marco Steinebach hat folgendes geschrieben: | | Joa, klar, aber das funktioniert nicht mit meinem Screenreader zusammen. |
Das'n Argument.
| Marco Steinebach hat folgendes geschrieben: | | ähm, das war mir klar, hat aber den KLEINEN Nachteil, daß man die Datei erst als WAVE rippen muß udn dann der LAME zum encodieren übergeben - wie das geht, ist mir klar, es ging um den direkten weg. |
Geht mit LAME imho nicht, und mir wäre auch sonst keine Komponente bekannt, die das kann. Die BASS-Beispiele laufen bei dir auch nicht? Bindest du die DLL denn zum richtigen Zeitpunkt ein? |
|
 |
|
|
|
| |
| Marco Steinebach |
#5| Verfasst am: 06.01.2009, 00:18 Titel: Re: cd's rippen - brauche dringend hilfe! |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 230 angemeldet: 04.08.2006 Delphi 5 Standard

|
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 |
| [ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ] |
|
 |
|
|
|
| |
| Cyf |
#6| Verfasst am: 06.01.2009, 06:59 Titel: Re: cd's rippen - brauche dringend hilfe! |
 |
 |
 |
|
aktives Mitglied Alter: 20 Status: offline Beiträge: 392 angemeldet: 30.05.2008 Turbo Delphi für Win32

|
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. |
Zuletzt bearbeitet von Cyf am 06.01.2009, 07:02, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| Garfield |
#7| Verfasst am: 06.01.2009, 13:25 Titel: Re: cd's rippen - brauche dringend hilfe! |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 910 angemeldet: 09.07.2004 Wohnort: im LK ABI Delphi 7 Personal

|
| Marco Steinebach hat folgendes geschrieben: | ... 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. |
Die Fehler liegen in der dynamic_bass_enc.pas. Es fehlt an einigen Stellen das 'stdcall;'.
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20
| 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; |
| |
 Ciao Garfield
Delphi 3 Professional, Delphi 7 Personal, TurboDelphi 2006
Zuletzt bearbeitet von Garfield am 06.01.2009, 13:27, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| Marco Steinebach |
#8| Verfasst am: 06.01.2009, 17:21 Titel: Re: cd's rippen - brauche dringend hilfe! |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 230 angemeldet: 04.08.2006 Delphi 5 Standard

|
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. |
|
 |
|
|
|
 |
|
 |
| |
|
|
| |
 
|
|
| |
|
Du darfst keine Beiträge in dieses Forum schreiben. Du darfst auf Beiträge in diesem Forum nicht antworten. Du darfst Deine Beiträge in diesem Forum nicht bearbeiten. Du darfst Deine Beiträge in diesem Forum nicht löschen. Du darfst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|
 |