我需要从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应用程序中的本地目录。
答案 0 :(得分:6)
简短回答:CDA文件无法做到这一点。
答案很长:CDA文件只是Windows为CD上的每个音轨生成的存根文件。这些文件不包含实际的音频数据。它们包含的是光盘上每个轨道开始和停止的位置。如果文件从CD“复制”到计算机,则不能单独使用它,因为它只是部分光盘的快捷方式。音频CD未格式化为文件系统磁盘。它无法作为文件访问。这就是Windows创建CDA文件的原因。它将CD显示为带有轨道文件的驱动器,以便于查看。
您必须使用可以从磁盘加载实际音轨的库,而不是文件而是音轨。使用CDA的正确方法是将其用作实际音频轨道的参考,将其翻录到文件,然后加载翻录文件。
您可以使用原生Windows Media Interface来翻录音轨。我还发现Code Project Tutorial似乎正在使用自定义开膛手。他们应该让你朝着正确的方向前进。