2014-01-30 24 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的比特率。