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

时间:2016-10-04 07:30:45

标签: c# windows-store-apps uwp windows-10-universal

我需要从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应用程序中的本地目录。

1 个答案:

答案 0 :(得分:6)

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

答案很长:CDA文件只是Windows为CD上的每个音轨生成的存根文件。这些文件不包含实际的音频数据。它们包含的是光盘上每个轨道开始和停止的位置。如果文件从CD“复制”到计算机,则不能单独使用它,因为它只是部分光盘的快捷方式。音频CD未格式化为文件系统磁盘。它无法作为文件访问。这就是Windows创建CDA文件的原因。它将CD显示为带有轨道文件的驱动器,以便于查看。

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

您可以使用原生Windows Media Interface来翻录音轨。我还发现Code Project Tutorial似乎正在使用自定义开膛手。他们应该让你朝着正确的方向前进。