daten von audio cd lesen ...
-
kann mir da mal jemand ein paar stichworte nennen ? möchte tracks von einer audio cd einlesen, processing drüberfahren und dann über wave-api abspielen. es hängt halt beim lesen der files (?) von der cd.
versuche mit CreateFile("//./x:" ...) und ReadFile() laufen scheinbar nicht mit einer audio-cd
!?
ach ja, und kann mir jemand sagen, was genau in den .cda files steht ? header, track-info ?
thx ... rocknix ///
-
Das einzigste was mir jetzt in den Sinn kommt ist das abspielen der .cda files mit direct sound output (DirectX)
MFG
RS
-
hmm, hier für interessierte schon mal die "*.cda entschlüsselung"
CDA music tracks file format by Wojtek Kaniewski 1997 Note: Everything in this file is based on my own investigations. All information that you'll find in this text file do not come from Microsoft Corp. CDA files are generally RIFF resources. The RIFF id of .CDA file is "CDDA" (43h, 44h, 44h, 41h). They contain only one data block called "fmt " (66h, 6dh, 74h, 20h). In current version of .CDA file, this block is 24 bytes long. Here's structure of it: Offset Length Description 00h 02h CDA file version. Currently equals 1. If it has other value, following data may be out of date. 02h 02h Number of track. 04h 04h CD disc serial number (the one stored in CDPLAYER.INI) 08h 04h Beginning of the track in HSG format. 0Ch 04h Length of the track in HSG format. 10h 04h Beginning of the track in Red-Book format. 14h 04h Length of the track in Red-Book format. As you see, time is represented in two formats: HSG and Red-Book. HSG can be calculated as following: time = minute * 4500 + second * 75 + frame Red-book is much easier to use, because it contains minutes, seconds and frames in unmodified form, byte-packed: Offset Length Description 00h 01h Frame 01h 01h Second 02h 01h Minute 03h 01h not used Now, I'll show you an example file. First part is a hex dump of the file, the second is the explanation of the fields. 52 49 46 46 24 00 00 00 43 44 44 41 66 6D 74 20 RIFF$...CDDAfmt 18 00 00 00 01 00 04 00 B8 24 F6 00 F7 11 01 00 .........$...... B4 5C 00 00 0A 25 0F 00 20 10 05 00 .\...%.. ... 01 00 - first version of CDA file :) 04 00 - fourth track B8 24 F6 00 - serial number of CD in CDPLAYER.INI is [F623B8] F7 11 01 00 - begining of track in HSG format B4 5C 00 00 - length of track in HSG format 0A 25 0F 00 - begining of track in Red-Book format (15:37) 20 10 05 00 - length of track in Red-book format (05:16) That's all. It should be enough to write CDA Viewer :) If you need more info or something isn't clear, feel free to write.
ansonsten bin ich immer noch an weiteren tipps interessiert
rocknix ///
-
ein weiterer mehr oder weniger erfolgreicher versuch ...
unsigned char data[16384]; DWORD dwRead = 0; DWORD dwError = 0; HANDLE hFile = CreateFile( "//./O:", GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL); ReadFile( hFile, (void*) &data[0], 16384, &dwRead, NULL); DWORD dwError = GetLastError(); CloseHandle(hFile);
funktioniert bei einer normalen CD-ROM einwandfrei bei einer Audio CD gibts als error eine 87 (INVALID PARAMETER) nach dem ReadFile() call zurück ...
hat jemand eine idee, welcher parameter und warum ?
rocknix ////
[ Dieser Beitrag wurde am 10.01.2003 um 14:14 Uhr von RockNix editiert. ]
-
Der Parameter ist bestimmt ein ungültiges File Handle.
-
nein, CreateFile() liefert einen gültigen HANDLE zurück ...
rocknix ///
-
Hallo,
schau mal eher in der ecke: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/mci_7vvt.asp
-
Um dir das Suchen noch ein bisschen zu vereinfachen: "Playing a Compact Disc Track" ([url] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/mci_45d7.asp [/url]).
Die Infos aus den CDA-Dateien brauchst du überhaupt nicht, die Länge und Startposition der Tracks kannst du viel einfacher über MCI-Commands bekommen.
-
vielen dank erstmal ...
MCI fällt aber doch aus, da ich keinen zugriff auf die daten habe, da diese doch direkt vom cd-rom zur soundkarte übertragen werden.
oder irre ich mich da ?
rocknix ////
-
Sorry, ich dachte, du willst die Dateien nur abspielen.
Wenn du an die Daten der Tracks rankommen willst, musst du IMHO mit Low Level Multimedia Funktionen arbeiten.
Bei Codeguru gibt's den Source Code von einem CD-Ripper zum downloaden. Hab mir den Code nicht angeguckt, aber vielleicht ist es ja was für dich:
[url] http://codeguru.earthweb.com/multimedia/MusicRip.html [/url][ Dieser Beitrag wurde am 11.01.2003 um 14:41 Uhr von macphistox2002 editiert. ]
-
werde mal reinschauen ... vielleicht ist es das, was ich suche.
vielen dank erstmal für die hilfe
rocknix ///
-
hmm, da hat sich der autor bei code-guru wohl ein wenig weit aus dem fenster gelehnt ... siehe auch die kommentare
leider handelt es sich hier nicht um einen echten ripper sondern die sounds werden über waveOut gespielt und dann direkt wieder über waveIn recorded ...
schade, hörte sich soooo vielversprechend an
und weiter gehts ...rocknix ///
-
aloa RockNix ...
[url] http://akrip.sourceforge.net [/url]
da solltest den quellcode von deinem der besten ripper finden den ich kenne.
vielleicht hilft dir das weiterDeadman
-
superlink - hat auf jeden fall schon mal etwas licht ins dunkel gebracht
heissen dank ... rocknix ///
-
also die lösung scheint die WNASPI32.DLL zu sein, aber ...
scheinbar gibt es unter 9x/nt verschiedene versionen (logisch), die aber auch frei benannt werden können
...
weiss jemand, ob es da einen key in der registry gibt, wo der name der aspi-support-dll eingetragen ist ?
rocknix ///