0001. C# 取得音樂檔(例如.mp3)播放長度的方法

C#學習筆記

       using System.IO;
       using Shell32;
       using Microsoft.Win32;
       using System.Runtime.InteropServices;

        /// <summary>
        /// 取得音樂檔播放長度的方法
        /// </summary>
        /// <param name="MusicPath"></param>帶入音樂.mp3的位置 例如 C:\\hello.mp3
        /// <returns></returns>
        public int GetMediaLen2(string MusicPath)
        {
            string dirName = Path.GetDirectoryName(MusicPath);//---------取得檔案路徑 (不包含檔案)
            string SongName = Path.GetFileName(MusicPath);//-取得檔案名稱 (此處為音樂檔案.mp3)
            FileInfo fInfo = new FileInfo(MusicPath);//------------取得檔案的相關屬性
            ShellClass sh = new ShellClass();//----------------------取得文件屬性 使用microsoft的Com元                                                                   //件 Dll的Embed Interop Type(內嵌Interop類型)=false
            Folder dir = sh.NameSpace(dirName);//----------------------將檔案路徑轉為Folder的型態
            FolderItem item = dir.ParseName(SongName);//---------------將檔案轉為FolderItem的型態
            string SongTime = Regex.Match(dir.GetDetailsOf(item, -1), "\\d{2}:\\d{2}:\\d{2}").Value;
                                                                                      //取得string型態的音樂長度
            //dir.GetDetailsof(該路徑下的這個檔案 , -1 )  -1 = 所有的資料
            //Regex.Match("字串" , 找出指定的字串項目)  時間格式為 00:00:00  所以    
            //       \\d{2}:\\d{2}:\\d{2}
           
            SongTime = SongTime.Replace(':', '0');//----------------將:以0取代
            int data = int.Parse(SongTime);//--------------------------再轉為int 即為秒數
            return data;
        }


        在 dir.GetDetailsof 時 第二項參數有以下

        -1 所有資料
        0   檔案的名稱包含附檔名  (ex:  hello.mp3)
        1   檔案大小 (ex:  47.4kb)
        2   格式         (ex:  MP3 格式聲音)


 

        在 dir.GetDetailsof 時 第二項參數有以下

 

        -1 所有資料

        0   檔案的名稱包含附檔名  (ex:  hello.mp3)

        1   檔案大小 (ex:  47.4kb)

        2   格式         (ex:  MP3 格式聲音)