2011-02-10 18 views
6

Estoy haciendo una biblioteca de álbumes de música. El programa debe conectarse a una base de datos como FreeDB y luego almacenarla.Importación de datos del CD de audio con C#?

Por el momento, es solo un concepto y quiero saber si es posible hacerlo. La verdadera pregunta es, ¿hay alguna forma de obtener los datos de un CD como lo que sucede cuando reproduces un disco en Windows Media Player? Hice un poco de búsqueda y encontré ID3 y mp3, pero no creo que sea una pista, ya que las pistas son .cda.

Estoy estudiando programación (diploma). ¿Alguna sugerencia?

+0

Windows Media Player puede hacer esto: pop en un CD y que tratará de retreive la información del álbum (nombres nombre del CD, artista, pista, etc ...). * Cómo * hace esto, usando archivos CDA, no estoy seguro. – FrustratedWithFormsDesigner

+0

Los archivos cda en realidad no contienen la música. Solo son archivos de descriptores. Los datos de audio en general son PCM de 16 bits sin comprimir a 44100 muestras en estéreo. Pero no sé cómo abrir una pista de cd de audio para leer. – CodesInChaos

+0

He leído sobre cda y no contiene el audio en sí ... interesante de saber. – gorgo4

Respuesta

0

Si desea escribir todo el código desde cero, tendrá que aprender acerca de Red Book. De lo contrario, es posible que desee automatizar algo como un reproductor multimedia.

+0

no estoy seguro de lo que quiere decir acerca de la automatización y el reproductor multimedia ... ¡pero estoy leyendo sobre el libro rojo! Gracias. – gorgo4

+0

lo que quiero decir acerca de la automatización es encontrar y API para controlar o crear secuencias de comandos de otras aplicaciones. –

0

Lo siguiente se basa en mis vagos recuerdos de la descripción incompleta que proporcionó el equipo detrás de esa función en la era de Windows 98. Los detalles de la implementación eran confidenciales, y no estaba al tanto de los detalles, y las cosas pueden haber cambiado bastante en los aproximadamente 13 años siguientes desde que experimenté por primera vez con esta función.

Se leyó una muestra representativa de datos binarios del CD y se convirtió en una especie de suma de comprobación tipo CRC o un hash. La suma de comprobación se envió a un servicio web que contenía una base de datos que coincidía con esas sumas de comprobación con la información del álbum.

Cuando fue posible, el disco exacto coincidía; aparentemente, había suficientes conflictos en mi propia colección que a veces me presentaban una lista de posibles álbumes.

Microsoft gastó una buena cantidad de dinero en la construcción de esta base de datos y los datos incluyeron una asociación con al menos una empresa de terceros. Probablemente pueda construir una prueba de concepto con bastante facilidad, pero probablemente no pueda construir una base de datos completa usted mismo. Pero es posible que pueda usar algo como FreeDb para crear un servicio personalizado propio.

Un ejemplo de un enfoque similar se explica en detalle modesta aquí: http://en.wikipedia.org/wiki/CDDB

Es posible que los nuevos CDs incluyen algún tipo de identificador distinto, pero no estoy familiarizado con los estándares actuales de la industria de CD.

4

He encontrado un tutorial con el código de ejemplo que le ayudarán a cabo: http://www.codeproject.com/KB/audio-video/freedb.aspx

+0

FTA: hay dos bibliotecas de clases incluidas con la aplicación de demostración. Freedb: clases para recuperar información de la base de datos de CD de los servidores de freedb. Esta es la biblioteca que creé para este artículo. Ripper: esta es una versión modificada de la biblioteca C Sharp Ripper. Esta biblioteca se usa para acceder a una unidad de CD y recuperar información de CD de audio de bajo nivel. ...Modifiqué la clase CDDrive para incluir un par de métodos para calcular una ID de disco y rastrear las compensaciones según las especificaciones de freedb. Esta información se usa para consultar la base de datos de freedb. –

+0

Gracias. Ya me había topado con eso y, con mucho, el más cercano ... ¡Daré una lectura profunda! – gorgo4