使用C#从音频CD导入数据?

6
我正在制作一个音乐专辑库。该程序应该连接到像FreeDB这样的数据库,然后将其存储。
目前,这只是一个概念,我想知道是否有可能实现它。真正的问题是,是否有一种方法可以获取CD中的数据,就像在Windows Media Player中播放光盘时发生的情况?我做了一些研究,发现了ID3和mp3,但我认为这不会有任何帮助,因为这些曲目是.cda格式的。
我正在学习编程(文凭)。有什么建议吗?

Windows Media Player可以这样做:插入CD后,它会尝试检索专辑信息(CD名称、艺术家、曲目名称等)。至于如何使用CDA文件实现这一点,我不太确定。 - FrustratedWithFormsDesigner
cda文件实际上并不包含音乐,它们只是描述符文件。音频数据本身通常是未压缩的16位PCM,采样率为44100,立体声。但我不知道如何打开音频CD轨道以进行读取。 - CodesInChaos
我读到了关于CDA的内容,它本身并不包含音频... 很有趣的知识。 - gorgo4
3个回答

4

FTA:演示应用程序包含两个类库。Freedb - 用于从freedb服务器检索CD数据库信息的类。这是我为本文创建的库。Ripper - 这是C Sharp Ripper库的修改版本。该库用于访问CD驱动器并检索低级音频CD信息。...我修改了CDDrive类,以包括一些基于freedb规范计算光盘ID和轨道偏移量的方法。此信息用于查询freedb数据库。 - Colin O'Dell
谢谢。我已经看到过这个,到目前为止最接近的......我会仔细阅读! - gorgo4

0

如果你想从头开始编写所有的代码,你需要学习红皮书。否则,你可能只想自动化一些东西,比如媒体播放器。


我不确定你所说的自动化和媒体播放器是什么意思,但我正在阅读《红皮书》!谢谢。 - gorgo4
我所说的自动化是指寻找API来控制或编写其他应用程序的脚本。 - Matthew Whited

0

以下是基于我对 Windows 98 时代该功能团队提供的不完整描述的模糊记忆。具体实现细节属于机密,我不知道详细情况,在我第一次尝试该功能后的 13 年里,情况可能已经发生了很大变化。

从 CD 中读取了二进制数据的代表性样本,并将其转换为类似 CRC 校验和或哈希值的形式。校验和被发送到一个包含将这些校验和与专辑信息匹配的数据库的 Web 服务。

如果可能,会匹配到确切的光盘;显然,我的收藏中有足够的冲突,以至于有时会出现可能专辑列表。

微软在建立这个数据库上花费了相当多的资金,并且数据包括至少与一个第三方公司合作的合作关系。你可能可以很容易地构建一个概念验证,但你可能无法自行构建完整的数据库。但你可能可以使用类似 FreeDb 的东西来构建你自己的定制服务。

类似方法的一个示例在这里进行了适度详细的解释:http://en.wikipedia.org/wiki/CDDB

新一代的CD可能包含某种独特的标识符,但我不熟悉当前CD行业标准。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接