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

最佳答案

简而言之:这在cda文件中是不可能的。
长答案:CDA文件只是Windows为CD上的每个音频曲目生成的存根文件。这些文件不包含实际的音频数据。它们所包含的只是每个音轨开始和停止的位置。如果文件是从CD“复制”到计算机上的,则不能单独使用,因为它只是光盘一部分的快捷方式。音频CD未格式化为文件系统磁盘。它不能作为文件访问。这就是windows创建cda文件的原因。它将CD显示为带有曲目文件的驱动器,以便查看。
您将不得不使用一个库,它可以从磁盘加载实际的音频曲目,而不是作为文件,而是作为音频曲目。使用CDA的正确方法是将其用作实际音频曲目的参考,将其翻录到文件中,然后加载翻录的文件。
您可以使用本机Windows Media Interface翻录音频曲目。我还发现了一个Code Project Tutorial似乎在使用自定义裂土器。他们应该让你朝正确的方向走。

09-07 01:22