如何在 windows 10 通用应用程序中从 CD 导入 .CDA 曲目?

How to import .CDA tracks from a CD in windows 10 universal app?

我需要从 CD 导入曲目,但到目前为止我无法这样做。我可以从 CD 成功导入 .mp3 或许多其他音频格式。为了导入目的,我首先扫描 CD 的文件和文件夹。然后我向用户显示文件列表并复制用户从列表中选择的文件。

这是我扫描目录或 CD 的代码:

    List<StorageFile> allTrackFiles = null;
    private async Task GetFiles(StorageFolder folder)
    {
        if(!scanningRemovableTask)
        {
            return;
        }
        try
        {

        if(allTrackFiles == null)
        {
            allTrackFiles = new List<StorageFile>();
        }
        var items = await folder.GetItemsAsync();

        foreach (var item in items)
        {
                if (item.GetType() == typeof(StorageFile))
                {
                    StorageFile storageFile = item as StorageFile;
                    allTrackFiles.Add(storageFile);

                    var basicProperties  = await storageFile.GetBasicPropertiesAsync();
                    var musicProperties = await storageFile.OpenReadAsync();
                }
                else
                    await GetFiles(item as StorageFolder);
        }

        }
        catch(Exception e)
        {

        }
    }    

我将 CD 路径传递给此函数,它会为我创建一个文件列表。当 CD 只有 .mp3 或任何著名的音频格式时,此代码工作正常。但当 CD 具有 .CDA 扩展轨道时,它会产生麻烦。正如我们所知,.CDA 文件本身并不能播放,它们只是原始媒体文件的快捷方式。

现在,这就是我现在被困的地方。如何读取 .CDA 文件或将 .CDA 文件媒体导入通用 windows app.

中的本地目录

简短回答:CDA 文件无法做到这一点。

长答案:CDA 文件只是 stub 文件,由 Windows 为 CD 上的每个音轨生成。这些文件不包含实际的音频数据。它们所包含的只是每个曲目在光盘上开始和停止的位置。如果文件是"copied"从光盘到电脑,则不能单独使用,因为它只是光盘一部分的快捷方式。音频 CD 未格式化为文件系统磁盘。它不能作为文件访问。这就是 windows 创建 CDA 文件的原因。它将 CD 显示为带有曲目的文件的驱动器,以便于查看。

您将必须使用可以从磁盘加载实际音轨的库,不是作为文件而是作为音轨。使用 CDA 的正确方法是将其用作实际音轨的参考,将其翻录到文件中,然后加载翻录后的文件。

您可以使用本机 Windows Media Interface for ripping audio tracks. I also found a Code Project Tutorial,它似乎使用了自定义开膛手。他们应该让你朝着正确的方向前进。