2014-01-30 25 views
3

我想读取音频文件的“比特率”属性。我知道如何获得价值,但我以这样的方式获得价值,我不认为它是最有效率的。是否在索引28中固定“比特率”属性?

Shell shell = new Shell32.Shell(); 
Folder objFolder = shell.NameSpace(path); 
for (int i = 0; i < short.MaxValue; i++) 
{ 
    string property = objFolder.GetDetailsOf(null, i); 
    if (String.IsNullOrEmpty(property)) 
     break; 
    if (property.Equals("Bit rate")) 
    { 
     index = i; 
     break; 
    } 
} 
FolderItem item = objFolder.ParseName(fileName); 
string bitRateValue = objFolder.GetDetailsOf(item, index); 

我担心的是,for循环,我需要得到的“比特率”的指标,所以对于我的所有测试回来我指数28,因此,我开始怀疑,如果比特率始终在索引中28?如果没有,那么是否有更好的方法来找出比特率位于哪个索引?

回答

1

经过一些研究和其他成员的帮助后,我得到了我正在寻找的东西。这个答案适用于那些可能在这里搜索音频文件的比特率属性的人。

首先,如果我们使用Shell,则比特率属性将始终位于索引28处。但是,如果Shell对象包含该属性的任何值,则该对象是由Shell对象决定的。因为Shell的主要目的不是读取音频文件,所以我们不应该依赖它来读取任何音频文件属性。

This Thread解释了我们需要做什么来读取.wav的比特率。