AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi cd's rippen - brauche dringend hilfe!
Thema durchsuchen
Ansicht
Themen-Optionen

cd's rippen - brauche dringend hilfe!

Ein Thema von Marco Steinebach · begonnen am 5. Jan 2009 · letzter Beitrag vom 6. Jan 2009
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#1

cd's rippen - brauche dringend hilfe!

  Alt 5. Jan 2009, 22:13
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
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#2

Re: cd's rippen - brauche dringend hilfe!

  Alt 5. Jan 2009, 22:23
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/*che...ame/lame/USAGE

LAME zum Rippen der CD zu nutzen, dürfte schwer sein.
米斯蘭迪爾
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: cd's rippen - brauche dringend hilfe!

  Alt 5. Jan 2009, 22:34
Zitat von Der Abtrünnige:
1. Quelltext. "Häääää?" ist keine Fehlermeldung, und dass du kein gültiges Handle bekommst, hat bestimmt seinen Grund.
also:
Delphi-Quellcode:
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
          dh := BASS_Encode_Start (sh, pChar(cmdline), 0, nil, nil); Bass_errorGetCode, liefert einem das die 5 zurück, was für "invalid Handle" steht.
Zitat von Der Abtrünnige:
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.

Zitat von Der Abtrünnige:
Zu deinem Problem:

Natürlich kannst du LAME eine WAVE Datei mit Parametern übergeben, 10 Sekunden Google:

http://lame.cvs.sourceforge.net/*che...ame/lame/USAGE
, , ä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
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#4

Re: cd's rippen - brauche dringend hilfe!

  Alt 5. Jan 2009, 22:43
Zitat von Marco Steinebach:
wenn man die BASSENC.DLL dynamisch lädt.
Merkwürdig, in der Tat...
Zitat von Marco Steinebach:
Joa, klar, aber das funktioniert nicht mit meinem Screenreader zusammen.
Das'n Argument.
Zitat von Marco Steinebach:
ä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?
米斯蘭迪爾
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: cd's rippen - brauche dringend hilfe!

  Alt 5. Jan 2009, 23:18
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
Angehängte Dateien
Dateityp: zip tracktest_104.zip (441,0 KB, 19x aufgerufen)
Marco Steinebach
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#6

Re: cd's rippen - brauche dringend hilfe!

  Alt 6. Jan 2009, 05:59
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.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#7

Re: cd's rippen - brauche dringend hilfe!

  Alt 6. Jan 2009, 12:25
Zitat von Marco Steinebach:
... 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:
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;
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: cd's rippen - brauche dringend hilfe!

  Alt 6. Jan 2009, 16:21
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.
Marco Steinebach
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:05 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