/// <summary> /// 利用Bass库根据传入的音乐句柄返回该音乐信息 /// </summary> /// <param name="handle"></param> /// <returns></returns> private static MusicID3 GetMusicInfoByBass(int handle) { MusicID3 musicInfo = new MusicID3(); if (handle != 0) { string[] info = Bass.BASS_ChannelGetTagsID3V2(handle); if (info != null) { foreach (string s in info) { if (s.StartsWith("TIT2", true, null)) { musicInfo.Title = s.Remove(0, 5); } else if (s.StartsWith("TPE1", true, null)) { musicInfo.Artist = s.Remove(0, 5); } else if (s.StartsWith("TALB", true, null)) { musicInfo.Album = s.Remove(0, 5); } } } info = Bass.BASS_ChannelGetTagsID3V1(handle); if (info != null) { musicInfo.Title = info[0] != "" ? info[0] : musicInfo.Title; musicInfo.Artist = info[1] != "" ? info[1] : musicInfo.Artist; musicInfo.Album = info[2] != "" ? info[2] : musicInfo.Album; musicInfo.Year = info[3]; musicInfo.Comment = info[4]; musicInfo.Genre_id = info[5]; musicInfo.Track = info[6]; } } return(musicInfo); }
/// <summary> /// 获取指定音乐文件的ID3信息 /// </summary> /// <param name="filePath">文件路径</param> /// <returns>音乐ID3信息</returns> public static MusicID3 GetInformation(string filePath) { try { //打开文件 int s = Bass.BASS_StreamCreateFile(filePath, 0L, 0L, BASSFlag.BASS_SAMPLE_FLOAT); if (s == 0) { return(null); } MusicID3 musicInfo = GetMusicInfoByBass(s); double seconds = Bass.BASS_ChannelBytes2Seconds(s, Bass.BASS_ChannelGetLength(s)); musicInfo.Duration = Helper.Seconds2Time(seconds); musicInfo.Path = filePath; Bass.BASS_StreamFree(s); //释放文件 return(musicInfo); } catch (Exception ex) { Logger.Instance.Exception(ex); return(null); } }