![]() |
AudioCD - Rippen des letzten Tracks
Ich rippe mit IOCTL_CDROM_RAW_READ AudioCDs. Dabei verwende ich die Startadressen der Tracks als Anfang und die Startadresse des nächsten Tracks bzw des Leadout als Ende. Jedoch enden die auslesbaren Sektoren nicht erst beim Leadout, sondern schon etwas früher.
Ist es falsch, wie ich die Endemarken bestimme? Gibt es eine Regel, wie weit man vor dem Leadout aufhören sollte? |
AW: AudioCD - Rippen des letzten Tracks
![]() Schau mal hier vielleicht fällt dir etwas auf was du nicht bedacht oder implementiert hast. PS: Oder ist das zufällig deine Seite? ;) Da ist nämlich auch so nen Garfield Logo gruss |
AW: AudioCD - Rippen des letzten Tracks
Hast mich ertappt, Emil.
Dort lese ich immer 20 Sektoren, bis DeviceIoControl False zurückgibt. Dabei war mir noch nicht aufgefallen, dass nicht bis zum Leadout gelesen wird. Erst jetzt wo ich mit Lame_enc.DLL on the Fly encoden will. Damit ich nicht mit Pointern und Daten jonglieren will, werden 92 Sektoren eingelesen. Und da stellt sich dann die Frage, ob nicht irgendwann am Ende etwas fehlen könnte. |
AW: AudioCD - Rippen des letzten Tracks
Zitat:
Leider kann ich dir dazu nicht sehr viel sahen da ich dafür in meinem Mediaplayer die AKRip32 Bibliothek verwende. Da kenn ich solche probleme nicht. gruss |
AW: AudioCD - Rippen des letzten Tracks
Mit AKRip habe ich auch schon gearbeitet. Ich wollte es nun selbst versuchen und da ist es mir aufgefallen. Ob es nun ein Problem ist, weiß ich nicht.
Die Session beginnt und endet mit einer Pause, welche jeweils 2 Sekunden lang ist. Die anschließende Pause wird bei den Tracks mitgerippt und auch bei der Längenangabe einbezogen. Theoretisch könnte man sie weglassen. |
AW: AudioCD - Rippen des letzten Tracks
Zitat:
Feine Webseite hast du da.. :thumb: gruss |
AW: AudioCD - Rippen des letzten Tracks
Zitat:
Es müssen keine 2 Sekunden sein. z.B. bei einer Liveaufnahme eines Konzertes macht sich sowas blöd, aber man kann die Tracks ja dennoch an den Liedgrenzen trennen ... nur hörbar (eine Pause) sollte es nicht sein. :angle2: Du kannst aber nachsehn, ob und wieviel am Ende eines Tracks "still" ist und entfernst dann diese Stille. |
AW: AudioCD - Rippen des letzten Tracks
Ich meine mich zu erinnern, das die Struktur 2Sek Track 2Sek Track... ist.
Wobei ich so viele Erklärungen gehört und gelesen habe, daß ich eher zu der Auffassung neige, daß die 2 Sekunden Zufall sind aber (wieviele waren's nochmal) Sektoren als Trenner benötigt werden. Gruß K-H |
AW: AudioCD - Rippen des letzten Tracks
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: AudioCD - Rippen des letzten Tracks
![]() Nach den Ausführungen zu Syntax und Problemen scheint nur die erste Pause, also der stille Teil vor dem ersten Track, mit zwei Sekunden definiert zu sein. Für Pregrap und Postgrap werden als Beispielwerte ebenfalls zwei Sekunden angegeben. ![]() Neben den Audiodaten gibt es Subchanneldaten. In Subchannel P ist ein einfaches Musik-Pause-Flag enthalten. |
AW: AudioCD - Rippen des letzten Tracks
Mal geprüft ob die DRM geschützt sind ?
Das es vielleicht deshalb nicht geht? gruss |
AW: AudioCD - Rippen des letzten Tracks
Ich habe bis jetzt nur zwei getestet:
![]() ![]() Vermutlich sind sie nicht geschützt. EAC kann auch nicht mehr Sektoren auslesen. Ich will jetzt mal sehen, was GetLastError aussagt und ggfs meine Auswertung ändern.
Delphi-Quellcode:
Da nützt es nicht viel, wenn man darauf achtet, dass man nicht über die nächste Startadresse hinaus liest.
{
* Daten lesen. } Result := ReadCDDA(aTrack.dwOffset + dwReturned, dwSectors, aDevice, pBufferPCM); if not(Result) then begin beCloseStream(hbeStream); raise Exception.Create('Beim Lesen der Quelldatei ist ein Fehler aufgetreten.'); end; Nachtrag: Der Fehler ist: Zitat:
|
AW: AudioCD - Rippen des letzten Tracks
Jetzt habe ich die Sektoren einzeln lesen lassen.
Album 1: - Start Leadout LBA: 194892 - Gelesen bis LBA: 194742 Album 2: - Start Leadout LBA: 178820 - Gelesen bis LBA: 17670 Sind komischerweise andere Werte als beim Lesen mehrerer Sektoren. Dafür aber identisch. Ergebnis ist, dass die 150 Sektoren = 2 Sekunden vor dem Leodout nicht lesbar sind. |
AW: AudioCD - Rippen des letzten Tracks
Ich weiß zwar nicht ob das dein Problem löst, in dem Code zum Audio-CD lesen den ich vor einiger Zeit mal hier gepostet hatte, verfahre ich (wenn ich das richtig sehe) etwas anders (insbesondere bei der Berechnung der Sektoradressen):
![]() Ich habe den Code gerade nochmal getestet und der letzte Track wird korrekt ausgelesen. Nur bei der Längenanzeige wurde im von mir getesteten Fall noch die Länge des auf der CD befindenlich Daten-Tracks dazu addiert -- es wurde jedoch nicht versucht diesen wiederzugeben. Allerdings werte ich auch nicht so Scherze wie die Pausen zwischen den Tracks aus. |
AW: AudioCD - Rippen des letzten Tracks
Danke Igel457. Ich habe mal verglichen, was anders ist und konnte das Problem lösen. Die Längen der Titel waren bei Dir und mir unterschiedlich. Das heißt, in meiner Hilfsroutine fehlte eine Klammer und die Frames der Startadresse wurden nicht substrahiert sondern addiert. :oops: :wall:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 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