2011-02-10 20 views
6

Sto facendo una libreria di album musicali. Il programma dovrebbe connettersi a un database come FreeDB e quindi memorizzarlo.Importare dati da CD audio usando C#?

Al momento, è solo un concetto e voglio sapere se è possibile farlo. La vera domanda è, c'è un modo per ottenere i dati da cd come succede quando si riproduce un disco in Windows Media Player? Ho fatto un po 'di ricerche e ho trovato ID3 e mp3 ma non penso che sarà un vantaggio in quanto le tracce sono .cda.

Sto studiando programmazione (diploma). Qualche suggerimento?

+0

Window Media Player può fare questo: Pop in un CD e cercherà di prelevare informazioni album (nomi nome del CD, artista, brano, eccetera...). * Come * fa questo, usando i file CDA, non sono sicuro. – FrustratedWithFormsDesigner

+0

I file cda non contengono effettivamente la musica. Sono solo file descrittori. Lo stesso dato audio è solitamente un PCM a 16 bit non compresso con 44100 campioni in stereo. Ma non so come aprire una traccia audio cd per la lettura. – CodesInChaos

+0

Ho letto del cda e non conteneva l'audio stesso ... interessante da sapere. – gorgo4

risposta

0

Se si desidera scrivere tutto il codice da zero, sarà necessario conoscere Red Book. Altrimenti potresti voler automatizzare qualcosa come il lettore multimediale.

+0

non sai cosa intendi per automazione e lettore multimediale ... ma sto leggendo del libro rosso! Grazie. – gorgo4

+0

quello che voglio dire sull'automazione è trovare e API per controllare o scriptare altre app. –

0

Quanto segue si basa sui miei vaghi ricordi della descrizione incompleta fornita dal team che si occupava di quella funzionalità nell'era di Windows 98. Le specifiche dell'implementazione erano confidenziali, e non ero al corrente dei dettagli, e le cose potrebbero essere cambiate un po 'nei successivi 13 anni circa da quando ho sperimentato questa funzione per la prima volta.

Un campione rappresentativo di dati binari dal CD è stato letto e convertito in una sorta di checksum simile a CRC o hash. Il checksum è stato inviato a un servizio Web che conteneva un database corrispondente a tali checksum per le informazioni sull'album.

Se possibile, il disco esatto è stato abbinato; a quanto pare, c'erano abbastanza conflitti nella mia collezione che a volte mi veniva presentata una lista di album possibili.

Microsoft ha speso una discreta quantità di denaro per costruire questo database ei dati includevano una partnership con almeno un'azienda di terze parti. Probabilmente puoi costruire una dimostrazione di concetto abbastanza facilmente, ma probabilmente non sarai in grado di creare un database completo da solo. Ma potresti essere in grado di utilizzare qualcosa come FreeDb per creare un tuo servizio personalizzato.

Un esempio di un approccio simile è spiegato in dettaglio in questa sede modesta: http://en.wikipedia.org/wiki/CDDB

E 'possibile che i CD più recenti includono una sorta di identificativo distinti, ma io non ho familiarità con gli standard del settore CD attuali.

4

Ho trovato un tutorial con codice di esempio che vi possono aiutare: http://www.codeproject.com/KB/audio-video/freedb.aspx

+0

FTA: ci sono due librerie di classi incluse con l'applicazione demo. Freedb - classi per il recupero di informazioni sul database CD dai server freedb. Questa è la libreria che ho creato per questo articolo. Ripper - questa è una versione modificata della libreria C Sharp Ripper. Questa libreria viene utilizzata per accedere a un'unità CD e recuperare informazioni di CD audio di basso livello. ...Ho modificato la classe CDDrive per includere un paio di metodi per calcolare un ID disco e tracciare gli offset in base alle specifiche freedb. Questa informazione è usata per interrogare il database freedb. –

+0

Grazie. Mi ero già imbattuto in questo e di gran lunga il più vicino .... Darò una lettura approfondita! – gorgo4