【问题标题】:Importing Data from Audio CD using C#?使用 C# 从音频 CD 导入数据?
【发布时间】:2011-02-10 18:38:54
【问题描述】:

我正在做一个音乐专辑库。程序应该连接到像 FreeDB 这样的数据库,然后存储它。

目前,这只是一个概念,我想知道是否可以做到。真正的问题是,有没有办法像在 Windows Media Player 中播放光盘那样从 cd 获取数据?我做了一些研究,发现了 ID3 和 mp3,但我认为这不会是任何线索,因为曲目是 .cda。

我正在学习编程(文凭)。 有什么建议吗?

【问题讨论】:

  • Window Media Player 可以执行以下操作:弹出 CD,它会尝试检索专辑信息(CD 名称、艺术家、曲目名称等)。 如何使用 CDA 文件,我不确定。
  • cda 文件实际上并不包含音乐。它们只是描述符文件。音频数据本身通常是 44100 个立体声样本的未压缩 16 位 PCM。但我不知道如何打开音频 cd 曲目进行阅读。
  • 我读到了有关 cda 的内容,但不包含音频本身……很有趣。

标签: c# .net audio-recording


【解决方案1】:

我找到了一个包含示例代码的教程,可以帮助您:http://www.codeproject.com/KB/audio-video/freedb.aspx

【讨论】:

  • FTA:演示应用程序包含两个类库。 Freedb - 用于从 freedb 服务器检索 CD 数据库信息的类。这是我为本文创建的库。 Ripper - 这是 C Sharp Ripper 库的修改版本。该库用于访问 CD 驱动器并检索低级音频 CD 信息。 ...我修改了 CDDrive 类,以包含几个基于 freedb 规范计算磁盘 ID 和轨道偏移的方法。该信息用于查询freedb数据库。
  • 谢谢。我已经遇到过,而且是迄今为止最接近的……我会深入阅读!
【解决方案2】:

如果您想从头开始编写所有代码,您需要了解Red Book。否则,您可能只想自动化媒体播放器之类的东西。

【讨论】:

  • 不确定您对自动化和媒体播放器的意思...但我正在阅读红皮书!谢谢。
  • 我所说的自动化是寻找和 API 来控制或编写其他应用程序。
【解决方案3】:

以下内容基于我对 Windows 98 时代支持该功能的团队提供的不完整描述的模糊记忆。实现的细节是保密的,我不知道细节,自从我第一次尝试这个功能以来,在接下来的 13 年左右的时间里,事情可能发生了很大的变化。

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

如果可能,准确的磁盘匹配;显然,我自己的收藏中存在足够多的冲突,有时我会收到一份可能的专辑列表。

Microsoft 花费了大量资金来构建此数据库,其中数据包括与至少一家第三方公司的合作伙伴关系。您可能可以相当容易地构建概念证明,但您可能无法自己构建完整的数据库。但是您也许可以使用 FreeDb 之类的东西来构建您自己的自定义服务。

此处对类似方法的一个示例进行了详细说明:http://en.wikipedia.org/wiki/CDDB

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

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 2015-11-07
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 2019-10-28
    相关资源
    最近更新 更多